Ruby on Rails,Gem Devise Customization

时间:2014-12-01 19:17:46

标签: devise ruby-on-rails-4.1

您好我正在开发我的Ruby on Rails项目,我想自定义设计宝石但我的问题是我似乎无法找到一些关于如何自定义设计的教程,更具体地说是自定义登录,参数。

我已经自定义了设备的登录名和视图,但我的问题是它似乎没有创建用户名,名字,姓名,年龄等等。

它只获取电子邮件和密码等基本内容

我知道文档很棒而且特别是因为它是完整的但我的问题是我发现有点难以特意当我看不到视频或我如何定制我可以放在设计中的内容如果任何人都可以帮助我,或者有些教程的任何信息实际上做了我上面指定的那些会很棒并且真的很感激,并且请我在RoR上有点新,所以我觉得在阅读时有点困难文字,所以我需要一些视频和谢谢!

simplybel@simplybel:~/projects/gamification$ rails c
Loading development environment (Rails 4.1.6)
2.1.2 :001 > User.all
  User Load (0.8ms)  SELECT "users".* FROM "users"
 => #<ActiveRecord::Relation [#<User id: 7, first_name: nil, last_name: nil, profile_name: nil, email: "pat@yahoo.com", encrypted_password: "$2a$10$xg.HMU2JljnVLls3IX7Go.IfJVLGYSSRePjtDaYS4nE...", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 1, current_sign_in_at: "2014-12-01 23:50:17", last_sign_in_at: "2014-12-01 23:50:17", current_sign_in_ip: "127.0.0.1", last_sign_in_ip: "127.0.0.1", created_at: "2014-12-01 23:50:17", updated_at: "2014-12-01 23:50:17">]> 

2.1.2:002&gt;

这是在获得建议后rails控制台返回的内容,这是您可以克隆的代码

https://github.com/sanchez900/gamification.git

这是我执行更改之前的代码,如

class ApplicationController < ActionController::Base
before_action :configure_permitted_parameters, if: :devise_controller?

protected

def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_up) << :username
end
end

我也做了这个

rails generate devise:views

也做了控制器     rails generate devise:controllers users

做了路线     devise_for:用户,控制器:{sessions:&#34; users / sessions&#34; }

在我进行修改之前,其他一些信息也可能有助于项目克隆/链接

1 个答案:

答案 0 :(得分:1)


如果您已正确设置视图以提交所有添加参数,则需要按照文档https://github.com/plataformatec/devise#strong-parameters中的说明进行操作。

您需要在注册表单上更新允许的参数,以接受您需要的新参数。为此,您可以设置一个前置过滤器来为您的设计控制器配置允许的参数。在应用程序控制器中尝试这样的事情。

    before_action :configure_permitted_parameters, if: :devise_controller?

    def configure_permitted_parameters
      devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:first_name, :last_name, :profile_name) }
    end

你需要如上所述明确地写它(或者如果你愿意,可以使用.push)