Rails 已经有吸气器和设置器,而无需我设置attr_accessor.如何停止所有二传手?



这是我的类,如您所见,没有attr_accessor

class LegacyBlogPost < ActiveRecord::Base
establish_connection Rails.configuration.database_configuration['blogs']
self.table_name = 'blogpost'
self.primary_key = 'post_id'
end

但我仍然可以读取和写入所有变量。这是默认行为吗?

x = LegacyBlogPost.find(172925)
x.title += "."
x.save
=> true

不过,我的主要问题是,我如何避免给这门课写信? 我知道我可以让 mysql 用户只被允许执行选择语句。此外,我相信我可以重写轨道设置器,以便在方法被击中后立即返回。但我曾假设,如果我只是为所有事情设定attr_reader,编剧就不会在那里。

ActiveRecord会自动创建getter\setters来读取\写入所有列

如果要使模型为只读 do

class LegacyBlogPost < ActiveRecord::Base
def readonly?
return true
end
end

为了防止它被破坏,您可以使用

def before_destroy
raise ActiveRecord::ReadOnlyRecord
end

信用 http://blog.zobie.com/2009/01/read-only-models-in-activerecord/

研究使用attr_accessible.

最新更新