用户控件#create中的ActiveModel :: MassAssignmentSecurity :: Error

时间:2013-03-26 13:09:55

标签: ruby-on-rails

在我的图书目录显示中应用日志记录概念时,当用户正在重新编辑时,我会出现这种错误。

   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 method代码

     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

请帮忙!

1 个答案:

答案 0 :(得分:4)

如果您想按照自己的方式分配这些值,则需要将它们添加到模型中的attr_accessible

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

我怀疑你可能不想分配这两个,所以你可能想先从那个哈希中删除它们(在控制器中):

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

您还可以创建一个新哈希,其中只包含您要用来创建新User的值,如果您只有几个值可以保留,但要忽略很多值。

(你也可以创建一个新的“空”User并只分配你想要的值 - 如果在你的情况下更有意义的话。)