我的应用中有多个Devise模型(用户,管理员等)。我可以通过覆盖每个模型中的#send_devise_notification来异步发送Devise通知电子邮件。
# user.rb, admin.rb, etc
private
##
# Uses Active::Job to send Devise's emails asynchronously.
##
def send_devise_notification(notification, *args)
devise_mailer.send(notification, self, *args).deliver_later
end
由于这个代码在所有模型中完全相同,我想我可以创建一个名为DeviseAsyncCapable的Concern,它实现#send_devise_notification,就像我上面描述的那样。
# devise_async_capable.rb
module DeviseAsyncCapable
extend ActiveSupport::Concern
def send_devise_notification(notification, *args)
devise_mailer.send(notification, self, *args).deliver_later
end
end
# user.rb
class User < ActiveRecord::Base
include DeviseAsyncCapable
end
在其中一个模型中包含关注并对其进行测试后,未调用关注中定义的方法,而是设计内联电子邮件。我怎么能干这个代码?
答案 0 :(得分:0)
更新 - 回答
正如bcd回复的那样,你需要在调用devise后包括这个问题:database_autheticable
#user.rb
class User < ActiveRecord::Base
devise :database_authenticatable#, ...
include DeviseAsyncCapable
end