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