6

この質問と次の文書によると、attr_readonly可能であるはずです:

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

ただし、最初の1つは失敗し、一括割り当てはできないと言っていますbar。私は何が恋しいですか?

4

2 に答える 2

4

ドキュメントから

attr_accessibleアクセス可能な属性のリストを取得します。 他のすべての属性は保護されます。

そのattr_accessibleため、bar属性を一括割り当てから保護するようにしました。

于 2012-07-08T12:25:47.113 に答える
2

次のように属性を作成できます。

attr_accessible :key

次に、検証をもう1つ追加します

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

このようにして、作成時に一度一括割り当てすることができ、更新されないようにすることもできます。

于 2013-10-08T06:57:45.523 に答える