好的,所以這裏是交易。我有兩個表和一個連接表,因爲它是一個多對多的關係。我有一個訂單,一個訂單可以有很多產品。很顯然,這是另一種方式,因爲產品可以有很多訂單。我有以下類:Rails 3 has_many:通過命名問題
class Order < ActiveRecord::Base
has_many :orders_products
has_many :products, :through => :orders_products
end
class OrderProduct < ActiveRecord::Base
belongs_to :order
belongs_to :product
end
class Product < ActiveRecord::Base
has_many :orders_products
has_many :orders, :through => :orders_products
end
我得到一個頁面來顯示,我能夠進入的東西,當我去與保存的訂單上的產品進行交互通過@order.products
我越來越以下錯誤:
SQLite3::SQLException: no such table: order_products: SELECT "products".* FROM "products" INNER JOIN "order_products" ON "products".id = "order_products".product_id WHERE (("order_products".order_id = 1))
我的連接表被命名爲orders_products
,但你可以看到它試圖通過order_products
加入。我對Rails命名慣例的有限瞭解告訴我,orders_products
是命名它的正確方法,然後將我的模型命名爲OrderProduct
。我真的在我的頭上撞牆。
編輯:我看到,即使它救了我的訂單,而我選擇了多個複選框,因爲它是現在示數它沒有保存任何值在orders_products
表,大概是出於同樣的原因。
查看[本主題指南](http://guides.rubyonrails.org/association_basics.html#the-has_many-through-association)查看正確的`has_many:through`關聯示例。 – 2011-02-06 06:23:40