用户确认其帐户后发送欢迎电子邮件

时间:2013-05-24 12:58:55

标签: ruby-on-rails ruby-on-rails-3 devise actionmailer

我正在使用设计和动作管理器。我想知道如何在用户在应用程序上确认其帐户之后触发actionmailer方法,而不是之前这个动作管理器方法只是欢迎消息。

另外,如何获取同名用户信息,如姓名或电子邮件?我试过了resource。但它没有用。

5 个答案:

答案 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