即使属性在attr_accessible中,如何在rails中进行大量分配?

时间:2013-12-10 15:02:35

标签: ruby-on-rails

在我的喜欢中。我有:

class Like < ActiveRecord::Base
  attr_accessible :liked, :product_id, :user_id
end

在我的控制器中我有:

@like = Product.new(:product_id => params[:id].to_i, :user_id => current_user.id, :liked => "Yes")
@like.save

但是我收到一条错误消息,指出无法批量分配受保护的属性:product_id,user_id,likes。关于如何解决这个问题的任何建议?

2 个答案:

答案 0 :(得分:2)

您似乎已在Like模型上将属性设置为可访问,但您尝试在Product模型上进行批量分配。如果你在那里设置attr_accessible,你会发现事情会更好。

答案 1 :(得分:1)

@ Chowlett的回答是正确的。如果要分配固定的属性集(如示例中所示),则可以使用without_protection标志:

@like = Product.new({product_id: params[:id].to_i, user_id: current_user.id, liked: 'Yes'}, without_protection: true)