假设我有这些模型:
class Order
belongs_to :guest
has_many :line_items, inverse_of: :order
has_many :tickets, through: :line_items
end
class Ticket
belongs_to :guest
belongs_to :line_item
end
我想在scope
上创建一个Order
,让我查询包含属于order's
Guest
的1张以上故障单的订单。一个例子:我下了3张票的订单,然后范围将返回该订单。如果我下了相同的订单,然后将2张门票转移到另外的Guest
,那么我将不再匹配scope
,因为count
的门票tickets.guest_id = orders.guest_id
只有1 (总共3个)。
我尝试过类似的事情:
scope :has_untransferred_tickets, -> { joins(:tickets).having('count(tickets.guest_id = orders.guest_id) > 1') }
但没有骰子。我在Postgres。谢谢你的帮助。一个scope
非常重要,因此它会返回ActiveRecord::Relation
Orders
我可以链接的内容。
答案 0 :(得分:0)
将故障单和订单访客比较移动到where子句,然后对返回的故障单总数执行计数。
bufferWithTime(200)