我正在尝试使用连接条件而不是外键在两个模型之间创建关联。有谁知道这是否可行?
例如,我想将产品加入定价点。产品有价格,定价点有最小和最大金额和名称。例如。最小值= 0,最大值= 20,名称=小于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 :(得分: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"
为方便起见,您可以将其移至Products类中的方法。
另一种选择是使用原始SQL。