繁体   English   中英

如何防止ActiveRecord对象的字段被更改?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM