rails 从不同类型的相同 table 中获取记录的方法

rails way to fetch records from same table with different types

我想从同一张 table 票中获取三种类型的票。像这样

Ticket.where(type: 'a').limit(5)
Ticket.where(type: 'b').limit(5)
Ticket.where(type: 'c').limit(5)

在 rails 中以最少的数据库命中获取相当于上述三个查询的数据的最佳方法是什么。

您可以使用IN

types = [a,b,c]

Ticket.where("type IN (?)", types).limit(5)

我认为您需要使用 sql UNION 查询。你可以看到这个答案: ActiveRecord Query Union

或者只用 rails 的总和就做出了所有这些事情。这不是一个优雅的解决方案,但你可以试试:

scope :by_type, ->(type){ where(type: type).limit(5) }

def self.foo
  Ticket.by_type('a') + Ticket.by_type('b') + Ticket.by_type('c')
end