我希望能够保护帐户的电子邮件字段不被更新,但不能在首次创建帐户记录时保护。
我尝试了以下内容:
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但不保存记录。检查错误表明已添加验证方法的错误。
有更好的方法吗?
答案 0 :(得分:2)
尝试以下方法:
class Account < ActiveRecord::Base
attr_readonly :email
end
这允许使用电子邮件创建新记录,但不允许后续更新。