ruby-on-rails – 为什么我在Rails 4中获得连接表的未知主键例外?

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 为什么我在Rails 4中获得连接表的未知主键例外?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这些是我的模特:
class Product
  has_many :line_items
  has_many :orders,:through => :line_items
end

class LineItem 
  belongs_to :order
  belongs_to :product
end

class Order
    has_many :line_items
    has_many :products,:through => :line_items
end

来自schema.rb:

create_table "line_items",id: false,force: true do |t|
    t.integer  "order_id"
    t.integer  "product_id"
    t.integer  "quantity"
    t.datetime "created_at"
    t.datetime "updated_at"
  end

我刚刚升级到Rails 4,我的连接表停止工作.如果我执行@ order.line_items,它会抛出异常“模型LineItem中的表line_items的未知主键”. @ order.products按预期工作.

我已经尝试删除并重新创建line_items表,我已经尝试安装protected_attributes gem,但没有任何改变.

这是the trace.

解决方法

在模型添加
self.primary_key = [:order_id,:product_id]

我认为确保这些列上有索引是明智的.您可以使用以下迁移创建一个

add_index :line_items,[:order_id,:product_id]

猜你在找的Ruby相关文章