use*_*763 4 ruby ruby-on-rails 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
Run Code Online (Sandbox Code Playgroud)
我一直收到这个错误
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
Run Code Online (Sandbox Code Playgroud)
Kir*_*rat 16
attr_accessible不可用Rails version 4+.你必须使用强大的参数.
使用强参数,属性白名单已移至控制器级别.attr_accessible从模型中删除呼叫.
以下是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
Run Code Online (Sandbox Code Playgroud)
您可以在我的回答下方记下@Frederick评论,
你仍然可以使用,
attr_accessible但它已被提取到protected_attributes宝石中(虽然明显强大的参数是前进的方式)