急切加载提取所有字段,但显式指定了select

时间:2013-02-01 15:29:17

标签: ruby-on-rails ruby-on-rails-3.2 eager-loading

我有这样的查询,

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

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

这是顺便说一下,当我们急切加载或者我在这里错过了某些东西时,rails会表现吗?

1 个答案:

答案 0 :(得分:0)

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

预先加载意味着预加载数据库行。它不会仅获取属性。它会加载所有相关的行。

例如:

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

这里,它不只是从用户表加载名称。它将从数据库中获取所有用户行。所以你不必激发额外的查询。还有一件事是当您使用include时,如果您拥有包含表的属性,则会忽略select子句。欲了解更多信息,请访问ryan bates rialscast on joins vs include:http://railscasts.com/episodes/181-include-vs-joins