attr_protected仅用于更新?

时间:2011-05-08 22:52:31

标签: ruby-on-rails

我希望能够保护帐户的电子邮件字段不被更新,但不能在首次创建帐户记录时保护。

我尝试了以下内容:

validate :email_is_unchanged, :on => :update
def email_is_unchanged
    errors.add :email, "can only be changed through confirmation" if email_changed?
end

但是当我尝试执行以下操作(使用数据库中的现有记录)时:

  

a = Account.first

     

a.update_attributes({:email =>   “email@example.com”)}

它返回true但不保存记录。检查错误表明已添加验证方法的错误。

有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

尝试以下方法:

class Account < ActiveRecord::Base
    attr_readonly :email
end

这允许使用电子邮件创建新记录,但不允许后续更新。