【问题标题】:Selecting all columns with Inner Join in Active Record在 Active Record 中选择所有具有 Inner Join 的列
【发布时间】:2013-02-19 00:30:46
【问题描述】:

在 Ruby on Rails 指南中,我看到了使用联接的示例。例如

Category.joins(:posts)

查询结果

SELECT categories.* FROM categories
  INNER JOIN posts ON posts.category_id = categories.id

这一切都很好,但是如何使用 Active Record 返回类别和帖子列?还是我完全错过了 SQL?

【问题讨论】:

    标签: sql ruby-on-rails ruby-on-rails-3 join rails-activerecord


    【解决方案1】:

    您需要拨打#includes:

    Category.includes(:posts)
    

    【讨论】:

    • 我希望得到更详细的答案。至少这让我朝着正确的方向前进。谢谢。
    • #includes 急切地加载提供的关联,这似乎是您所需要的。它应该在 Rails 指南中进行更多解释。
    • 我发现的问题是,当我将数据渲染到视图上时,我只从Category 而不是Post 获取属性。
    • 如果您的 Category 类中有一个名为 :posts 的关联,那么 AR 将自动选择帖子属性,您可以通过 category.posts 访问它们。您可以不使用#includes 来执行此操作,但每次您在类别上调用#posts(N+1 查询)时,它都会执行另一个查询。 #includes 将(通常)作为单个查询执行。
    • 谢谢,我想我会再次问这个问题,但与我的情况有关,因为它超出了这个问题的范围。
    猜你喜欢
    • 1970-01-01
    • 2014-07-09
    • 1970-01-01
    • 2021-11-19
    • 2014-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多