如何在注册Rails3和Devise后添加回调

Oli*_*ier 9 callback devise ruby-on-rails-3

如何添加回调以为注册用户创建帐户.

设计文件(registrations_controller.rb)在控制器/设计下我的用户模型有has_many:accounts关系(并且帐户模型有belongs_to:user)

首先我不知道在哪里添加回调(什么文件?)

那么,如何使用注册用户的正确user_id自动创建一个新帐户?

提前致谢.

Nav*_*eed 18

您可以覆盖设备的注册控制器,添加回调以使用过滤器创建帐户.请记住将文件命名为registrations_controller.rb

class RegistrationsController < Devise::RegistrationsController
  after_filter :add_account 

  protected

  def add_account
    if resource.persisted? # user is created successfuly
      resource.accounts.create(attributes_for_account)
    end
 end
end
Run Code Online (Sandbox Code Playgroud)

然后在您的routes.rb告诉设计使用覆盖控制器进行注册

devise_for :users, controllers: { registrations: 'registrations'}
Run Code Online (Sandbox Code Playgroud)

  • 在我的情况下,我需要访问params,所以我采用这种方法而不是模型的after_create. (3认同)

zip*_*ppy 2

这是谷歌群组上的一个帖子,可以回答您的问题:

http://groups.google.com/group/plataformatec-devise/browse_thread/thread/6fc2df8d71f8b2f0

基本上,它建议仅向您的用户模型添加标准的 Rails“after_create”方法来运行您需要的代码。