0

在我的 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
4

1 回答 1

0

您可以为该属性制作自定义设置器:

def name=(val)
  raise RuntimeError, 'You cannot change properties of this object'
end

这将防止任何人修改该值。

于 2013-04-17T21:15:05.487 回答