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)有沒有比提到的更好的方法?