当用户使用Devise注册时,我想检查他们的电子邮件地址是否包含@mysite.com
,如果是,请使用新用户的ID在表格中创建新记录。
我一直在通过Devise文档查看用户注册后采取行动的方法(因为我需要他们的ID用于关联),但我找到的只是after_sign_up_path_for
这只是一条路径
有什么想法吗?
class RegistrationsController < Devise::RegistrationsController
def create
super
# I was hoping "super" creates the new user, and now I would have access to current_user.id, but that doesn't appear to be true.
end
end
答案 0 :(得分:2)
如果您需要在用户登录后执行某项功能,Devise会提供after_database_authentication
回调方法。您可以在用户模型中使用回调,而不是在控制器中,这样做的好处是您不必覆盖Devise Registrations控制器。
请参阅documentation了解DatabaseAuthenticatable。
我在Rails Devise Tutorial中介绍了一些类似的技巧,但在教程中我只提及after_database_authentication
回调方法,指出没有必要覆盖Devise Registrations控制器来容纳帖子 - 签约行动。
答案 1 :(得分:0)
我从我的一个应用程序中复制了以下结构:
class Users::RegistrationsController < Devise::RegistrationsController
after_filter :do_something, only: :create
def create
...
super
...
end
def do_something
# User succesfully created?
return unless @user.id
... @user.id
end
end