2011-05-08 76 views
4

我希望能夠保護帳戶的電子郵件字段不被更新,但不能在帳戶記錄首次創建時保護。attr_protected僅用於更新?

我試過如下:

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

一.update_attributes({:email => 「[email protected]」)}

它返回true但不保存記錄。檢查錯誤顯示驗證方法中的錯誤已添加。

有沒有更好的方法來做到這一點?

回答

2

嘗試以下操作:

class Account < ActiveRecord::Base 
    attr_readonly :email 
end 

這使得新紀錄創造與電子郵件,但沒有後續更新。