Active Record:如何读取具有许多其他对象的db对象?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Active Record:如何读取具有许多其他对象的db对象?相关的知识,希望对你有一定的参考价值。
想象一下,我有一个具有许多附件的票证模型。在票模型我有:
has_many :attachment, dependent: :destroy, class_name: 'Ticket::Attachment'
现在我需要读取具有一个或多个附件的数据库故障单(故障单也可以没有附件)。我发现我可以“通过”所有门票并检查是否attachment.empty?
但效率不高,因为一开始我读了db的所有门票。我想从db中读取那些在此活动记录查询中具有> 0附件的记录。怎么做?
答案
以下应该只给你有附件的门票:
Ticket.joins(:attachments).group("tickets.id")
它将在2个表之间执行内部联接,只返回两个表中存在的行,然后按Ticket.id
对它们进行分组,以便获得唯一票证行。
以上是关于Active Record:如何读取具有许多其他对象的db对象?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Active Record 查找具有重复数据的记录
具有完全迁移支持的 .net Active Record ORM