0

我正在开发一个使用 devise 进行身份验证的 rails 3.2 应用程序。

对于与应用程序无关的目标(主要是统计信息),我需要创建一个单独的用户表(我们称之为 alt_users),它只包含用户表的某些字段(姓名、电子邮件和其他一些字段)但没有密码摘要和其他敏感信息。此外,如果用户修改他的帐户或删除它,则不必修改此记录。

我的想法是,当用户注册时,在设计完成他的工作之前,一些选定的字段被插入到 alt_users 表中。

为了实现这一点,覆盖设计行为的正确方法是什么?

4

1 回答 1

2

您可以通过以下方式覆盖 Devise 的 RegistrationsController:

在您的 routes.rb 中:

devise_for :users, :controllers => {:registrations => "registrations"}

然后创建文件 app/controllers/registrations_controller.rb :

# app/controllers/registrations_controller.rb
class RegistrationsController < Devise::RegistrationsController

  def create
    # add your data to alt_users here
    super
  end

end 

附带说明一下,如果您可以避免覆盖 Devise 的控制器,那将是最好的。尝试考虑其他选项,例如before_createUser 模型上的回调。

于 2012-11-19T13:52:03.960 回答