一度設定した属性を ActiveRecord モデルで変更できない機能を実装しようとしています。この目的のために、次のメソッドを作成しました。
def address
self[:address]
end
def address=(val)
if new_record?
self[:address] = val
else
errors.add(:address, "Cannot change address, once it is set")
return false # tried return nil here first, did not work
end
end
ここで何か間違ったことをしていますか?アドレスを変更しようとすると、オブジェクトを無効にしたいのですが、変更してもエラーは発生しません。obj.valid?
編集:値は一度設定されると変更されませんが、obj.valid を介して検証を行うときに無効なオブジェクトを取得したいですか?