我被困在这里,似乎在线任何地方都没有答案。练习说:
创建将产品价格复制到行项目的迁移,并更改购物车模型中的 add_product 方法以在创建新行项目时捕获价格。
我的代码:
class AddPriceToLineItem < ActiveRecord::Migration
def self.up
add_column :line_items, :price, :decimal
say_with_time "Updating prices..." do
LineItem.find(:all).each do |li|
li.update_attribute :price, li.product.price
end
end
end
def self.down
remove_column :line_items, :price
end
end
我也试过:
class AddPriceToLineItem < ActiveRecord::Migration
def self.up
add_column :line_items, :price, :decimal
LineItem.all.each do |li|
li.price = li.product.price
end
end
def self.down
remove_column :line_items, :price
end
end
我不断收到此错误:
rake db:migrate
== AddPriceToLineItem: migrating =============================================
-- add_column(:line_items, :price, :decimal)
-> 0.0010s
-- Updating prices...
rake aborted!
An error has occurred, this and all later migrations canceled:
undefined method `price' for nil:NilClass
奇怪的是它说的是 undefined nil:nilClass,因为之前的行中刚刚定义了价格。
我正在使用 rails (3.2.1),ruby 1.9.3p125。
任何人都可以帮忙吗?