Railscast tutorialは、"admin"
として私のUser
モデルのrole
属性を編集するための質量割り当てをバイパスしています。ユーザーの更新中に一括割り当てを迂回すると、NameError?
class User < ActiveRecord::Base
attr_accessible :email, :password, :remember_me
attr_accessor :accessible
devise :database_authenticatable, ....etc
before_create :setup_default_role_for_new_users
ROLES = %w[admin default banned]
private
def setup_default_role_for_new_users
if self.role.blank?
self.role = "default"
end
end
def mass_assignment_authorizer
super + (accessible || [])
end
end
そして、私は新しいUsersController
は私の更新方法に問題があるために作成した:私はこのラインbecuaseこのかかわらを行うことはできません
def update
@user = User.find(params[:id])
@user.accessible = [:role] if user.role == "admin"
if @user.update_attributes(params[:user])
redirect_to @user, :notice => "Successfully updated user."
else
render :action => 'edit'
end
end
:if user.role == "admin"
これは私が私の役割を定義した方法です問題を引き起こしてエラーが発生しました:
NameError (undefined local variable or method `user' for UsersController
ここでは何が欠けていますか?
ありがとうございます。
「@ user.role == "admin" 'ならば? –
@ KL-7私はそれを試みましたが、 'role'を更新しませんでした。もし私が 'if'というステートメントを持っていなくても、それはロールを更新します。 – LearningRoR