这是我的类,如您所见,没有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
.