Ruby on rails 用户的未定义方法属性可访问错误

Ruby on rails 用户的未定义方法属性可访问错误,ruby-on-rails,ruby,ruby-on-rails-4,ruby-on-rails-4.1,Ruby On Rails,Ruby,Ruby On Rails 4,Ruby On Rails 4.1,我正在尝试创建某种登录。我创建了一个用户脚手架,并将此代码保存在我的User.rb中 class User < ActiveRecord::Base attr_accessible :name, :password_digest, :password, :password_confirmation has_secure_password end class用户

我正在尝试创建某种登录。我创建了一个用户脚手架,并将此代码保存在我的User.rb中

class User < ActiveRecord::Base
attr_accessible :name,  :password_digest, :password, :password_confirmation

has_secure_password
end
class用户
我一直在犯这个错误

undefined method `attr_accessible' for #<Class:0x396bc28>

Extracted source (around line #2):
1
2
3
4
5

class User < ActiveRecord::Base
  attr_accessible :name,  :password_digest, :password, :password_confirmation

  has_secure_password
end

Rails.root: C:/Sites/web
未定义的方法“attr\u accessible”#
提取的源(第2行附近):
1.
2.
3.
4.
5.
类用户
attr\u accessible
不适用于
Rails版本4+
。您必须使用强参数

使用强参数,属性白名单已移动到控制器级别。从模型中删除可访问的属性调用

以下是Rails指南中关于如何使用

在您的情况下,您可以这样做:

class UsersController < ApplicationController
  ## ...
  def create
    @user = User.new(user_params) ## Invoke user_params method
    if @user.save
      redirect_to @user, notice: 'User was successfully created.' 
    else
      render action: 'new'
    end       
  end
  ## ... 

  private
  ## Strong Parameters 
  def user_params
    params.require(:user).permit(:name, :password_digest, :password, :password_confirmation)
  end
end 
class UsersController
你可以在我的回答下面记下@Frederick comment

您仍然可以使用
attr\u accessible
,但它已被提取到
protected\u属性
gem(尽管显然强参数是 (前进方向)


你使用的是什么版本的Rails?1.9.3p484是我在Ats的Ruby上使用的版本。不是Rails。。选中像
rails-v
。这是您的Ruby版本。rails版本如何?如何使用具有强参数的has\u secure\u密码?只需允许属性
:name、:password\u digest、:password、,:UsersController中的password_confirmation
,如我在回答中提供的示例链接所示。您仍然可以使用attr_accessible,但它已被提取到protected_attributes gem中(尽管显然强参数是前进的方向)@FrederickCheung+1这是一个很好的观点,将其添加到我的回答中。