2016-01-13 66 views
0

我試圖在電子郵件地址更改時發送電子郵件通知。要做到這一點,我需要首先檢測屬性是否真的改變。我認爲添加代碼的最佳位置是在控制器中的after_filter如何檢查屬性更改並在rails中觸發回調

# app/controllers/users_controller.rb 
after_filter :email_change_notification, only: [:update] 

def email_change_notification 
    UserMailer.notify_new_email if @user.email_changed? 
end 

我現在的問題是,電子郵件email_changed?不會在此上下文中返回預期值。它始終是false。作爲替代方案,我能做到這一點的模型after_save

# app/models/user.rb 
after_save :email_change_notification 

def email_change_notification 
    UserMailer.notify_new_email if email_changed? 
end 

這工作,但我認爲前者是一個更好的方法,因爲調用郵件是不是模型的責任的一部分。

我的問題是:

(1)我應該在哪裏把這樣的回調(模型或控制器)?

(2)有沒有更好的方法來使控制器的方法工作?

(3)有沒有比提到的更好的方法?

回答

相關問題