cbr*_*ron 1 ruby-on-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
Run Code Online (Sandbox Code Playgroud)
但我仍然可以读写所有变量.这是默认行为吗?
x = LegacyBlogPost.find(172925)
x.title += "."
x.save
=> true
Run Code Online (Sandbox Code Playgroud)
我的主要问题是,我如何避免写这门课?我明白我可以让mysql用户只允许做select语句.另外我相信我可以重新编写rails setter,只要方法被击中就返回.但是我假设我只是为了一切设置了attr_reader,作家就不会在那里.
ActiveRecord 自动创建getters\setters以读取所有列的\ write
如果你想让模型成为只读的
class LegacyBlogPost < ActiveRecord::Base
def readonly?
return true
end
end
Run Code Online (Sandbox Code Playgroud)
为了防止它被破坏,你可以使用
def before_destroy
raise ActiveRecord::ReadOnlyRecord
end
Run Code Online (Sandbox Code Playgroud)
信用http://blog.zobie.com/2009/01/read-only-models-in-activerecord/
| 归档时间: |
|
| 查看次数: |
214 次 |
| 最近记录: |