我创建了两个模型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>
帮我解决这个问题
答案 0 :(得分:4)
attr_accessor
和attr_accessible
之间存在巨大差异 - 您想要使用另一个。 :)
答案 1 :(得分:1)
这是Rails中的一项安全功能,可以防止批量分配。如果您想将某些属性列入白名单
class User < ActiveRecord::Base
attr_accessible :login
end
或者在创建模型时不使用质量分配。