我正在开发一个使用 devise 进行身份验证的 rails 3.2 应用程序。
对于与应用程序无关的目标(主要是统计信息),我需要创建一个单独的用户表(我们称之为 alt_users),它只包含用户表的某些字段(姓名、电子邮件和其他一些字段)但没有密码摘要和其他敏感信息。此外,如果用户修改他的帐户或删除它,则不必修改此记录。
我的想法是,当用户注册时,在设计完成他的工作之前,一些选定的字段被插入到 alt_users 表中。
为了实现这一点,覆盖设计行为的正确方法是什么?
我正在开发一个使用 devise 进行身份验证的 rails 3.2 应用程序。
对于与应用程序无关的目标(主要是统计信息),我需要创建一个单独的用户表(我们称之为 alt_users),它只包含用户表的某些字段(姓名、电子邮件和其他一些字段)但没有密码摘要和其他敏感信息。此外,如果用户修改他的帐户或删除它,则不必修改此记录。
我的想法是,当用户注册时,在设计完成他的工作之前,一些选定的字段被插入到 alt_users 表中。
为了实现这一点,覆盖设计行为的正确方法是什么?
您可以通过以下方式覆盖 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_create
User 模型上的回调。