0

ロギングの概念を私の本のカタログ表示に適用しているときに、ユーザーが再ジェスチャしているときに、この種のエラーが発生します。

   Can't mass-assign protected attributes: password_confirmation, password

そして、app / model/user.rbの私のコードは次のとおりです。

   class User < ActiveRecord::Base
     attr_accessible :name, :password_digest
     validates :name, :presence => true, :uniqueness => true
     has_secure_password 
   end

そして、app / contollers/user_controller.rbのcreateメソッドのコード

     def create
     @user = User.new(params[:user])

       respond_to do |format|
       if @user.save
       format.html { redirect_to users_url, :notice => 'User #{@user.name} was   successfully                  created.' }
    format.json { render :json => @user, :status => :created, :location => @user }
      else
    format.html { render :action => "new" }
    format.json { render :json => @user.errors, :status => :unprocessable_entity }
    end
    end
    end

助けてください!

4

1 に答える 1

4

これらの値を現在の方法で割り当てたい場合はattr_accessible、モデルのに値を追加する必要があります。

attr_accessible :name, :password_digest, :password, :password_confirmation

両方を割り当てたくないのではないかと思うので、最初に(コントローラーで)そのハッシュからそれらを削除することをお勧めします。

user = params[:user]
user.delete(:password_confirmation)
@user = User.new(user)

User保持する値が少なく、無視する値が多い場合は、新しいを作成するために使用する値だけを含む新しいハッシュを作成することもできます。

(また、新しい「空」Userを作成して、必要な値を割り当てることもできます-それがあなたの状況でより理にかなっている場合。)

于 2013-03-26T13:11:35.350 に答える