2009-07-26 13 views
1

我想使用連接條件而不是外鍵在兩個模型之間創建關聯。有誰知道這是否可能?如何在用於belongs_to關聯的Rails中指定連接條件?

例如,我想將產品加入定價點。產品具有價格,定價點具有最小和最大金額以及名稱。例如。 Min = 0,Max = 20,Name =少於$ 20。該產品之間的關聯是在價格和最小和最大。

SELECT * 
FROM products 
INNER JOIN pricing_points 
ON pricing_points.minimum < products.price AND pricing_points.maximum >= products.price 

這是否有意義?所以我想在我的模型是這樣的:

class Product < ActiveRecord::Base 

    belongs_to :pricing_point, :join => "INNER JOIN pricing_points ON pricing_points.minimum < products.price AND pricing_points.maximum >= products.price" 

    ... 

end 

預先感謝您的幫助,

上限

回答

0

你真的不能確定使用ActiveRecord該類型的關係。 AR提供了:conditions選項,但它僅適用於查詢的WHERE部分,它仍會嘗試加入pricing_point_id = pricing_point.id。

你要做到以下幾點:

Products.find :all, :joins => "INNER JOIN pricing_points \ 
    ON pricing_points.minimum < products.price \ 
    AND pricing_points.maximum >= products.price" 

你可以在你的產品類這個移動到了一種便利。

另一個選擇是使用原始SQL。

+0

是的,我認爲可能是這樣。我想映射關聯,因爲我正在使用思維獅身人面像,並且我想在搜索索引中使用該關聯。儘管感謝您的幫助。 – Caps 2009-07-26 08:59:37

相關問題