我正在尝试创建某种登录。我创建了一个用户脚手架并将此代码放在我的 user.rb 中
class User < ActiveRecord::Base
attr_accessible :name, :password_digest, :password, :password_confirmation
has_secure_password
end
我不断收到此错误
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_accessible
不适用于Rails version 4+
。你必须使用强大的参数。
通过强参数,属性白名单已移至控制器级别。去除attr_accessible
从您的模型中调用。
这是 Rails Guide 中如何使用的示例参数强 http://edgeguides.rubyonrails.org/action_controller_overview.html#strong-parameters
在你的情况下,你可以这样做:
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
您可以记下我的答案下面的@Frederick 评论,
你仍然可以使用attr_accessible
但它已被提取到protected_attributes
gem(虽然明显强大的参数是
前进的道路)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)