Rails has_many关联导致“无此列”错误

时间:2012-06-23 09:37:59

标签: ruby ruby-on-rails-3 has-many

我正在关注http://guides.rubyonrails.org/association_basics.html的指南 我已经创建了

class Customer < ActiveRecord::Base
  has_many :orders, :dependent => :destroy
end



class Order < ActiveRecord::Base
  belongs_to :customer
end

但执行@order = @customer.orders.create()会导致

  

未知属性:customer_id

你知道为什么会出现这个错误吗?更重要的是,has_many的所有指南都有一个隐藏的原因,可以通过显示这个示例来驱使你疯狂,但是没有它们实际上正在工作:)

3 个答案:

答案 0 :(得分:4)

您需要将customer_id列添加到订单表。

为此你必须运行迁移 -

rails g migration add_customer_id_to_orders customer_id:integer

然后

rake db:migrate

答案 1 :(得分:1)

您必须在订单表中添加customer_id列。

ActiveRecord不知道要为相关订单获取哪个客户。

尝试rails g migration AddCustomerIdToOrders customer_id:integer(不要忘记db:migrate)。

答案 2 :(得分:0)

听起来您忘了运行迁移。从控制台和rails项目的根目录中,运行rake db:migrate以确保rails已为关联和模型生成所有支持表和列。