如何添加回调为注册用户创建账号。
Devise文件(用户)位于控制器/devise下。我的用户模型具有has_many :accounts关系(而帐户模型具有belongs_to :registrations_controller.rb)
首先,我不知道在哪里添加回调(什么文件?)
那么,如何使用注册用户的正确user_id自动创建新账号呢?
提前谢谢。
发布于 2011-04-27 17:02:03
您可以覆盖devise的注册控制器,添加回调以使用过滤器创建帐户。记住将文件命名为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然后在你的routes.rb中告诉devise使用重写控制器进行注册
devise_for :users, controllers: { registrations: 'registrations'}发布于 2011-01-20 11:02:45
这里有一个关于谷歌小组的帖子,它回答了你的问题:
http://groups.google.com/group/plataformatec-devise/browse_thread/thread/6fc2df8d71f8b2f0
基本上,它建议只向用户模型添加一个标准的rails "after_create“方法来运行所需的代码。
发布于 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发送确认电子邮件,因为用户有时不会持久化。
https://stackoverflow.com/questions/4702806
复制相似问题