警告:无法为User:login批量分配受保护的属性

时间:2015-04-17 18:20:25

标签: ruby-on-rails rails-console

我创建了两个模型user.rb和cart.rb

user.rb

class User < ActiveRecord::Base

  attr_accessor :login

  has_one :cart

end

cart.rb

class Cart < ActiveRecord::Base

  belongs_to :user

end

当我在rails控制台中创建用户时,会显示一条消息:警告:无法为User分配受保护的属性:login

E:\work\my_store>rails c
DL is deprecated, please use Fiddle
Loading development environment (Rails 4.1.8)
irb(main):001:0> user1 = User.new(login: "user1")
WARNING: Can't mass-assign protected attributes for User: login

=> #<User id: nil, login: nil, created_at: nil, updated_at: nil>
irb(main):002:0>

帮我解决这个问题

2 个答案:

答案 0 :(得分:4)

attr_accessorattr_accessible之间存在巨大差异 - 您想要使用另一个。 :)

答案 1 :(得分:1)

这是Rails中的一项安全功能,可以防止批量分配。如果您想将某些属性列入白名单

class User < ActiveRecord::Base
  attr_accessible :login
end

或者在创建模型时不使用质量分配。