2013-10-25 67 views
0

我有2種型號:產品(名稱,價格)和(USER_ID,PRODUCT_ID)Rails的協會和ActiveRecord的

然後我想在application_controller.rb

SELECT * FROM orders INNER JOIN products ON orders.product_id = products.id 
執行內部功能,此查詢

只有使用ActiveRecord和Rails關聯才能做到這一點?我應該在模型中寫什麼?

+0

您是否購物車模式? –

+0

對不起,粘貼錯誤的查詢。 – droptheplot

回答

3

你的模型應該是這樣的:

class Product < ActiveRecord::Base 
    has_many :orders 
end 

class Order < ActiveRecord::Base 
    belongs_to :product 
    belongs_to :user 
end 

現在你可以這樣做:

Order.joins(:product).all 

但什麼是你想達到什麼目的?這種毫無意義的加入的原因是什麼?如果您只是預加載產品,以免對數據庫進行任何其他查詢,則可以使用includes而不是聯接。

1

我懷疑你真的需要加入。嘗試迫切加載:

Order.includes(:product) 

Btw也許你應該閱讀文檔,如果你想要使用rails。沒有冒犯性,但是你可以在官方的Rails文檔或網上的大量內容中找到這方面的所有信息。尤其是,如果您開始使用Rails Michaels Hartl Learning Rails(http://ruby.railstutorial.org/