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