Ruby on rails 用户的未定义方法属性可访问错误
我正在尝试创建某种登录。我创建了一个用户脚手架,并将此代码保存在我的User.rb中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用户
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这是一个很好的观点,将其添加到我的回答中。