2

我有一个这样的查询,

company.users.select("users.id, users.state").includes(:organization)

在这里,我渴望加载关联organization。我期待在对象中获取属性 id 和 user_id ,但随后我获取了所有字段。

当我们急切加载时,rails 的行为是这样,还是我在这里遗漏了什么?

4

1 回答 1

0

在您的情况下,您将获得所有公司用户而不是组织。

急切加载意味着预加载数据库行。它不会只获取属性。它加载所有关联的行。

例如:

 comments = Comment.all(:select => "users.name,comment_text", :include => :user)

在这里,它不仅会从用户表中加载名称。它将从数据库中获取所有用户行。因此,您不必触发额外的查询。还有一件事是,include当您具有包含表的属性时,会忽略使用 select 子句。有关更多信息,请通过 ryan bates riascast 了解加入与包括:http ://railscasts.com/episodes/181-include-vs-joins

于 2013-02-01T15:33:24.260 回答