Ruby on rails Rails 3:使用Desive发送欢迎电子邮件
当用户注册到我的服务时,我如何发送欢迎电子邮件 另外,我如何从designe更改电子邮件:发件人和:主题字段Ruby on rails Rails 3:使用Desive发送欢迎电子邮件,ruby-on-rails,ruby-on-rails-3,devise,Ruby On Rails,Ruby On Rails 3,Devise,当用户注册到我的服务时,我如何发送欢迎电子邮件 另外,我如何从designe更改电子邮件:发件人和:主题字段 谢谢查看您的配置/devise.rb 您可以更改区域设置文件中的主题(config/locales/designe.en.yml)我通过覆盖designe的confirm完成了更改!方法: class用户
谢谢查看您的配置/devise.rb
您可以更改区域设置文件中的主题(config/locales/designe.en.yml)我通过覆盖designe的confirm完成了更改!方法:
class用户
这是一次很棒的讨论。按照benoror的建议重写该方法将非常有效。如果您认为您可能想要捕获其他用户事件,那么正如其他一些人在其他地方所建议的那样,Observer类可能是最干净的方法。此解决方案适用于Rails 3.0.x和3.1
要设置观察者,请对应用程序文件进行以下更改,将此观察者添加到您可能已经拥有的任何其他观察者中
#config/application.rb
config.active_record.observers = :user_observer
然后在models目录中创建一个新文件:
#app/models/user_observer.rb
class UserObserver < ActiveRecord::Observer
def after_create(user)
Notifier.user_new(user).deliver
end
end
您的environments/test.rb应具有以下设置以构建邮件阵列,而不是发送:
config.action_mailer.delivery_method = :test
config.action_mailer.perform_deliveries = true
不用说,您可以在消息中测试更多的内容(to、from等),但如果您愿意的话,这将以BDD的方式开始
另请参阅一些了解此问题的旧StackOverflow线程,包括:
#registrations_controller.rb
class RegistrationsController < Devise::RegistrationsController
def create
super
UserMailer.welcome(resource).deliver unless resource.invalid?
end
end
# routes.rb
devise_for :users, controllers: { registrations: "registrations" }
当然,您可以调整“UserMailer”和“Desive_for:users”以匹配您正在使用的型号名称。如果您没有使用:confirmable怎么办?如果它不是:comfirmable,我会使用相同的方法,但称之为:创建后,为了让它与Desive for non users一起工作,您需要使用
资源
来代替:RegistrationsMailer.welcome(resource).deliver if resource.persistend?
在这句话中,即使用户注册未完成,邮件也会被发送。不,这很正常。除非@user.invalid?
确保在注册完成之前邮件不会被发送。
#registrations_controller.rb
class RegistrationsController < Devise::RegistrationsController
def create
super
UserMailer.welcome(resource).deliver unless resource.invalid?
end
end
# routes.rb
devise_for :users, controllers: { registrations: "registrations" }