Rails使用自定义字段(auth_key)设计ParameterSanitizer以进行登录

时间:2013-12-06 15:19:59

标签: ruby-on-rails devise ruby-on-rails-4

我已经尝试了Devise gem的默认配置,用户可以使用那里的电子邮件地址登录,并且它的工作完美。 在我的情况下,我不需要使用registration_number(其他电子邮件地址)给用户登录但当我尝试使用registration_number签署一个新用户时,它只对数据库插入密码这是我从日志文件中获取的查询

 User Exists (0.4ms)  SELECT 1 AS one FROM `users` WHERE `users`.`registration_number` = BINARY '114150C' LIMIT 1
  SQL (49.6ms)  INSERT INTO `users` (`encrypted_password`) VALUES ('$2a$10$Fp3HCYszDjEDkl0DHCBCLuI9RttOaAQE2pi2xcTSkaMU9QNbW/8D6')

所以我做的是 (按照此处和其他一些堆栈站点的说明) 1.运行迁移以将用户电子邮件列的名称更改为registration_number 2.相应地更改config / initializers / devise.rb(替换:email with:registration_number) 3.在lib目录中创建user_sanitizer.rb,如下所述 将此代码放入其中

class User::ParameterSanitizer < Devise::ParameterSanitizer
    private
    def account_update
        default_params.permit(:first_name, :last_name, :email, :password, :password_confirmation, :current_password)
    end
end
  1. 根据此处提到的lazy way™,在过滤器之前添加到ApplicationController.rb (同时我相应地更改了视图和控制器) 但是,当我尝试sign_up一个新用户时,它唯一的插入密码到数据库registration_number列没有插入,我没有得到任何错误 - 好
  2. 尝试了this以及

1 个答案:

答案 0 :(得分:1)

好的,我已经解决了, 我唯一要做的就是在user.rb模型中注释这一行

attr_accessor:registration_number