我正在使用设计和动作管理器。我想知道如何在用户在应用程序上确认其帐户之后触发actionmailer方法,而不是之前这个动作管理器方法只是欢迎消息。
另外,如何获取同名用户信息,如姓名或电子邮件?我试过了resource
。但它没有用。
答案 0 :(得分:2)
这实际上是一项相对容易的任务。您需要做的就是为您的User类创建一个Observer。
class UserObserver < ActiveRecord::Observer
def after_save(user)
if user.confirmed_at_changed?
#send email
end
end
end
答案 1 :(得分:1)
Rails 3: Send welcome e-mail using Devise有一个很好的答案 你可以做点什么
class User < ActiveRecord::Base
devise # ...
# ...
def confirm!
welcome_message # define this method as needed
super
end
# ...
end
答案 2 :(得分:1)
Devise有针对此场景的内置回调。
# A callback initiated after successfully confirming. This can be
# used to insert your own logic that is only run after the user successfully
# confirms.
#
# Example:
#
# def after_confirmation
# self.update_attribute(:invite_code, nil)
# end
#
def after_confirmation
end
您可以在devise / lib / devise / models / confirmable.rb
中找到代码答案 3 :(得分:0)
这样做了。
after_save :send_welcome_email
def send_welcome_email
WelcomeEmail.notify(self).deliver if self.confirmed_at_changed?
end
答案 4 :(得分:0)
使用after_save将使您的应用程序运行并检查用户是否刚刚确认的条件。这会导致不必要的延迟。
我建议使用以下代码覆盖设计提供的默认确认功能。
class User < ActiveRecord::Base
devise :invitable, :database_authenticatable, :registerable, :recoverable,
:rememberable, :confirmable, :validatable, :encryptable
# Override devise confirm! message
def confirm!
welcome_email
super
end
# ...
private
def welcome_email
UserMailer.welcome_message(self).deliver
end
end
http://csnipp.com/s/507/-Send-welcome-mail-after-confirmation-devise