如何通过rails中的设计修复质量分配安全性错误?

时间:2013-03-27 13:28:40

标签: ruby-on-rails authentication devise

我在我的Rails应用程序中使用Devise进行身份验证。当我尝试以用户身份注册时,我收到一条错误消息:无法批量分配受保护的属性:email,password,password_confirmation。在我向名为“owner”的Users表中添加新列之前,我没有收到此错误。

User.rb

class User < ActiveRecord::Base
    devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable   
    attr_accessible :owner, :email, :password, :password_confirmation, :admin, :as => :admin    
end

迁移以添加用户:

class AddOwnerToUsers < ActiveRecord::Migration
  def change
    add_column :users, :owner, :boolean, :default => false
  end
end

在我添加之前:所有者,我不记得有这个问题。关于如何解决这个问题的任何建议?

1 个答案:

答案 0 :(得分:0)

我不确定:asattr_accessible的使用情况。我从来没用过那个。到目前为止,我已经明白了,你必须在更新质量属性时指定它,如:

User.new(params[:user], :as => :admin)

或,

@user = User.find(1)
@user.update_attributes(params[:user], :as => :admin)