【发布时间】:2020-11-06 22:50:32
【问题描述】:
我正在使用 Rails 6。我有一个 Order 表和一个 Address 表。 Orderhas_many :addresses。每个订单都包含对两个地址字段的引用,一个用于计费,另一个用于运输。如果送货记录与账单记录相同,则将送货地址记录的same_as_billing字段设置为true,并将所有地址数据存储在账单地址记录中。
我正在尝试查询所有具有逻辑送货地址且国家/地区设置为“美国”的订单。我通常会通过这样的常规连接来完成此操作:
Order.all.joins(:addresses).where(addresses: {address_type: "Shipping", country: "United States"})
但是,由于某些送货地址可能标有same_as_billing = true,因此实际上没有地址数据存储在这些记录中,而是存储在帐单地址记录中。我不确定如何查询送货地址记录,然后如果same_as_billing = true 有条件地加入账单地址记录。每个Order 总是有两个地址关联。
【问题讨论】:
-
我认为您想要 EXISTS 子查询之类的东西 - 请告诉我们您正在使用什么数据库并提供模型示例,以便我们可以对其进行测试,而无需从头开始重新创建所有内容?
标签: sql ruby-on-rails ruby-on-rails-6