设计3个Rails 4未允许的参数

时间:2014-02-17 18:57:41

标签: ruby-on-rails devise

这是我在注册时获得的:Unpermitted parameters: password_confirmation WARNING: Can't mass-assign protected attributes for User: email, password我已经安装了所有内容,并且我正在尝试第一次设计。我创建了一个模型用户,一切都应该顺利。这是设计第一个用户注册的全新安装。没有更改默认代码。 请帮忙!

问题已解决: 我将attr_accessible添加到了我的user.rb模型

4 个答案:

答案 0 :(得分:4)

检查您的用户模型并查看参数是否可访问。

请记住,您不需要为它们命名,IE我的用户模型看起来像设计3和rails 4:

class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable, :confirmable

  validate :username, presence: true, uniqueness: true, format: { with: /[a-zA-Z0-9]{4,20}/ }
end

解决方案Rahul所说的没有多大意义,因为这些参数已经被允许在请求上,但在我的情况下,我有一个额外的用户名模型,因此我添加到ApplicationController:

  before_filter :configure_permitted_parameters, if: :devise_controller?

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

答案 1 :(得分:1)

在ApplicationController中添加以下内容(如果你有Rails4)

before_filter :update_sanitized_params, if: :devise_controller?

#  method to sanitized params for devise user sign up
def update_sanitized_params
    devise_parameter_sanitizer.for(:sign_up) {|u| u.permit(:email,:password, :password_confirmation)}
end

有关详细信息,请参阅https://github.com/plataformatec/devise#getting-started“强参数”部分

答案 2 :(得分:0)

如果其他人仍然收到此错误,请检查您的表单网址路径。我已将session_path复制到应该使用registration_path的表单中。

答案 3 :(得分:-1)

我第一次使用Devise GEM(目前正在学习rails)。在我的情况下,我有同样的错误,这是一个路由问题。

问题出在 form_for 观点文件夹的 new.index.html.erb devise/registrations

表单有一个网址: session_path(resource_name) ,但为了工作,它应该指向 registration_path(resource_name)

我改变了,现在它正在研究heroku。

This是该文件的链接。

这是heroku上的练习:devise.muga.com.co