首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Rails3和Devise注册后添加回调

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

Stack Overflow用户
提问于 2011-01-16 07:33:48
回答 4查看 9.4K关注 0票数 9

如何添加回调为注册用户创建账号。

Devise文件(用户)位于控制器/devise下。我的用户模型具有has_many :accounts关系(而帐户模型具有belongs_to :registrations_controller.rb)

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

那么,如何使用注册用户的正确user_id自动创建新账号呢?

提前谢谢。

EN

回答 4

Stack Overflow用户

发布于 2011-04-27 17:02:03

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

代码语言:javascript
复制
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

然后在你的routes.rb中告诉devise使用重写控制器进行注册

代码语言:javascript
复制
devise_for :users, controllers: { registrations: 'registrations'}
票数 18
EN

Stack Overflow用户

发布于 2011-01-20 11:02:45

这里有一个关于谷歌小组的帖子,它回答了你的问题:

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

基本上,它建议只向用户模型添加一个标准的rails "after_create“方法来运行所需的代码。

票数 1
EN

Stack Overflow用户

发布于 2016-05-01 23:36:11

我使用了这两种方法。

模型中的after_create用于在RegistrationsController中创建关联数据和after_filter :send_notification_mailer, only: :create (与@naveed相同)

因为在after_create回调中我收到了错误异常ActiveJob::DeserializationError: Couldn't find User with id

当使用活动作业发送确认电子邮件时,会在后台使用sidekiq发送确认电子邮件,因为用户有时不会持久化。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4702806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档