Active Record:如何读取包含许多其他对象的db对象?

时间:2018-03-29 15:13:30

标签: ruby-on-rails activerecord

想象一下,我有一个具有许多附件的Ticket模型。在票模型中,我有:

has_many :attachment, dependent: :destroy, class_name: 'Ticket::Attachment'

现在我需要从具有一个或多个附件的数据库故障单中读取(故障单也可以没有附件)。 我发现我可以“浏览”所有票证并检查是否attachment.empty?但是效率不高,因为在开始时我从db读取所有票证。我想从db中读取那些有>的记录。此活动记录查询中有0个附件。怎么做?

1 个答案:

答案 0 :(得分:2)

以下内容应仅为您提供附件附件的门票:

Ticket.joins(:attachments).group("tickets.id")

它将在2个表之间执行内部联接,只返回两个表中存在的行,然后按Ticket.id对它们进行分组,以便获得唯一票证行。