[英]How can I prevent an ActiveRecord object's fields from being changed?
在我的Rails 3项目中,我有一张表仅供参考:我从不希望任何人能够在应用程序中更改此数据。 这是我到目前为止的内容:
class Foo < ActiveRecord::Base
attr_readonly :name, :description
has_many :bars
def readonly?
return true
end
...
end
虽然这会阻止保存记录或使用update_attributes
,但我想将其锁定得更多:有什么办法可以防止分配已加载的记录,例如:
f = Foo.find(1)
f.name = 'New Name'
SomeError: You cannot change properties of this object
您可以为属性设置自定义设置器:
def name=(val)
raise RuntimeError, 'You cannot change properties of this object'
end
这将防止任何人修改该值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.