如何在Rails 3 AREL语句中使用“includes”?

时间:2011-06-29 19:56:25

标签: ruby-on-rails-3 arel

我正在尝试查看SQL背后和AREL声明:

Brand.where(:subdomain => "coke").includes(:products).to_sql

品牌has_many产品,产品属于品牌。

但是,上述声明仅产生:

"SELECT `brands`.* FROM `brands` WHERE `brands`.`subdomain` = 'coke'"

为什么我在SQL中看不到products表的信息?

1 个答案:

答案 0 :(得分:6)

当您使用includes语句时,Rails将为每个表生成一个单独的查询(因此,如果您包含其他2个表,则总共将有3个查询)。

您可以使用joins语句,它会将其全部归为一个查询,但是您可能会遇到性能损失。此外,如果您的任何where(...)条件查询包含的表,它将被归为一个查询。

有关Rails行为的更多信息,请参阅this other similar question