在我的Rails 3项目中,我有一个表,我只想参考应用程序:我从不希望任何人都能够在应用程序中更改此数据。这是我到目前为止所做的:
class Foo < ActiveRecord::Base
attr_readonly :name, :description
has_many :bars
def readonly?
return true
end
...
end
虽然这可以防止保存记录或使用update_attributes
,但我还想将其锁定更多:有没有办法阻止分配已加载的记录,la:
f = Foo.find(1)
f.name = 'New Name'
SomeError: You cannot change properties of this object
答案 0 :(得分:0)
您可以为该属性制作自定义设置器:
def name=(val)
raise RuntimeError, 'You cannot change properties of this object'
end
这可以防止任何人修改该值。