我想从同一个表Ticket中获取三种类型的票证。喜欢这个
Ticket.where(type: 'a').limit(5)
Ticket.where(type: 'b').limit(5)
Ticket.where(type: 'c').limit(5)
rails中获取数据的最佳方法是使用最少的DB命中数来获得与上述三个查询相同的数据。
答案 0 :(得分:2)
您可以使用 IN
types = [a,b,c]
Ticket.where("type IN (?)", types).limit(5)
答案 1 :(得分:1)
我认为你需要使用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