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