我有一个Client
模型has_many :orders
,但每个订单也belongs_to :order_type
。这里的OrderType
基本上用作过滤表,因为每个订单都有一组公共属性,如:category, :size, :date
,并且有几千个条目,所以我将它保存在一个单独的模型中是有意义的,而不是将这些信息保存在每个订单输入中。
我对如何设置关联以及我需要连接表的位置感到有点困惑,所以我基本上可以查询这样的内容:
c = Client.find(x)
order_conditions = {date: "2016-01-01".."2016-01-31", category: "x")
我如何设置模型和关联/连接表,以便获得与给定客户端的某个OrderType条件列表匹配的所有订单?
根据this 12.1.3 Joining Multiple Associations
答案 0 :(得分:0)
你能不能
OrderType belongs_to:order
和 订单has_one:order_type
然后您可以找到所有具有匹配订单类型的订单。 (虽然我可能只是在订单数据库中包含order_type)
我是一个新手,如果这是废话,请道歉,请删除:)
答案 1 :(得分:0)
你应该试试
def Client
has_many :orders
end
def Order
belongs_to :client
belongs_to :order_type
end
def OrderType
has_many :orders
end
# To query
client.orders.joins(:order_type).where(order_types: { date: date })