有没有一种简单的方法可以使 Rails ActiveRecord 模型成为只读?

2024-01-01

我希望能够在数据库中创建一条记录,但随后阻止 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(使用前将#替换为@)

有没有一种简单的方法可以使 Rails ActiveRecord 模型成为只读? 的相关文章

随机推荐