【问题标题】:How to get all objects that have child objects如何获取所有具有子对象的对象
【发布时间】:2015-08-20 20:21:46
【问题描述】:

我的帖子模型具有称为反馈、众筹和想法的嵌套属性。

我想编写一个方法来显示所有带有反馈的帖子、所有带有众筹的帖子以及所有带有想法的帖子的列表。我该如何做到这一点?在我看来是这样的:

Post.find(feedbacks.present?)

Post.all where (feedbacks.present)

【问题讨论】:

    标签: ruby ruby-on-rails-4 cocoon-gem


    【解决方案1】:

    我会这样做:

    Post.includes(:feedbacks).where.not(feedbacks: { id: nil })
    

    或者:

    Post.joins(:feedbacks)
    

    【讨论】:

    • joins 确实是正确答案,因为这将创建一个 INNER JOIN 并排除所有没有现有 Feedback 记录的记录。 includes 将创建一个 LEFT OUTER JOIN,然后必须使用 where 子句来过滤不需要的记录。(随着应用程序的增长,这可能会对性能产生一些影响)。
    猜你喜欢
    • 2021-04-28
    • 2013-02-02
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 2020-06-06
    • 2017-07-30
    • 2016-12-28
    • 1970-01-01
    相关资源
    最近更新 更多