根据this question和attr_readonly
的{{3}},以下内容应该是可能的:
class MyModel < ActiveRecord::Base
attr_accessible :foo
attr_readonly :bar
end
m = MyModel.create(foo: '123', bar: 'bar') # Should work
m.update_attributes(bar: 'baz') # Should not work
然而第一个失败了,说我无法大量分配bar
。我在做什么?
答案 0 :(得分:4)
答案 1 :(得分:2)
您可以将该属性设为: -
attr_accessible :key
然后再添加一个验证
validate :check_if_key_changed, :on=> :update
private
def check_if_key_changed
if self.key_changed?
errors.add(:key,"cant change key")
end
end
通过这种方式,您可以在创建时批量分配一次,也可以确保它不会更新。