【问题标题】:Unsuccessful customization of Devise generated User model设计生成的用户模型定制失败
【发布时间】:2014-12-21 22:26:14
【问题描述】:

我在默认的设计生成的用户模型中添加了一个用户名:字符串属性(以及设计新/编辑注册中的表单字段),它没有成功地将用户的用户名设置为 nil,但是有提交编辑或新表单时没有错误。

<div><%= f.label :username %><br />
<%= f.text_field :username, autofocus: true %></div>

我创建了另一个用户控制器并为它提供了强大的参数,使用户名属性可以访问,我还通过扩展 Devise::RegistrationsController 的注册控制器使 :username 可访问

编辑您的 Devise 生成的用户模型的标准/公认方法是什么?

【问题讨论】:

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


【解决方案1】:

您必须在应用程序控制器中添加此清理方法和操作前:

before_action :configure_permitted_parameters, if: :devise_controller?

    def configure_permitted_parameters
        [:sign_up, :account_update].each do |action|
            devise_parameter_sanitizer.for(action).push(:user_name)
        end
    end

【讨论】:

  • 动作应该只是动作,还是应该是新的或编辑,如果这些是我正在使用的动作?
  • 只是应用程序控制器中的一个前置操作。您应该能够复制和粘贴该代码
【解决方案2】:

根据devise documentation,这应该适合你:

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

  protected

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

注意:这应该在应用程序控制器中完成。

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-12
    • 2010-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多