Ruby on rails Rails db:migrate无法批量分配受保护的属性
我正在通过《Rails第四版敏捷Web开发》一书学习Rails 给定以下迁移代码:Ruby on rails Rails db:migrate无法批量分配受保护的属性,ruby-on-rails,ruby,database,rake,dbmigrate,Ruby On Rails,Ruby,Database,Rake,Dbmigrate,我正在通过《Rails第四版敏捷Web开发》一书学习Rails 给定以下迁移代码: class CombineItemsInCart < ActiveRecord::Migration def up Cart.all.each do |cart| sums = cart.line_items.group(:product_id).sum(:quantity) sums.each do |product_id, quantity| if
class CombineItemsInCart < ActiveRecord::Migration
def up
Cart.all.each do |cart|
sums = cart.line_items.group(:product_id).sum(:quantity)
sums.each do |product_id, quantity|
if quantity > 1
cart.line_items.where(product_id: product_id).delete_all
cart.line_items.create(product_id: product_id, quantity: quantity)
end
end
end
end
def down
LineItem.where("quantity>1").each do |line_item|
line_item.quantity.times do
LineItem.create(cart_id: line_item.cart_id, product_id: line_item.product_id, quantity: 1)
end
line_item.destroy
end
end
end
现在我在某个地方读到,这本书是在默认情况下需要attr_accessible之前编写的,但它还没有真正涉及到如何正确使用它。我曾尝试在购物车模型中将:line_项目或:line_项目添加到我的attr_可访问行中,但没有成功
有人能告诉我这里发生了什么吗?不能批量分配受保护的属性:数量 尝试访问属性:数量
您需要列出该列表中的所有属性。您需要使属性可访问。在模型中:
class Object ActiveRecord::Base
attrib_accessible :attrib1, :attrib2, :attrib3
end
显然,您将使用模型的属性替换attrib1等属性。您尝试从移植中访问体量属性。如果要从代码中访问数据库表属性,则需要允许对该属性进行大量分配,以告知模型可以通过代码为字段分配数据。对于此用途,只需将所需字段添加为可访问的属性,对于您的问题,具体解决方案如下: 类LineItem
结束这对我来说没有意义。我不知道您的型号名称,也不知道它的属性,所以我做了一个通用示例。基本上,这与您接受的答案是一样的。不过,问题在于LineItem模型。我照你的建议做了。我以为问题出在购物车模型上。谢谢你的帮助
class Object ActiveRecord::Base
attrib_accessible :attrib1, :attrib2, :attrib3
end