我有这样的查询,
company.users.select("users.id, users.state").includes(:organization)
这里我渴望加载关联organization
。我期望在对象中获取属性id和user_id,但随后我将获取所有字段。
这是顺便说一下,当我们急切加载或者我在这里错过了某些东西时,rails会表现吗?
答案 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