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 中创建方法的代码

     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 回答