我希望能够在数据库中创建一条记录,但随后阻止 Rails 从那时起进行更改。我了解数据库级别的更改仍然是可能的。
我相信 attr_readonly 在属性级别上做了我想要的事情,但我不想手动指定字段......我宁愿有更多的白名单方法。
另外,我知道关联有一个 :read_only 选项,但我不想将对象的“只读性”限制为是否通过关联获取。
最后,我希望仍然能够销毁记录,因此像 :dependent => :destroy 这样的东西可以在关联中工作。
因此,总结一下:1)允许创建记录,2)允许删除记录,3)防止更改已保存的记录。
看着ActiveRecord::Persistence http://api.rubyonrails.org/classes/ActiveRecord/Persistence.html,一切最终都会调用create_or_update
在幕后。
def create_or_update
raise ReadOnlyRecord if readonly?
result = new_record? ? create : update
result != false
end
所以!只是:
def readonly?
!new_record?
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)