我有一个这样的查询,
company.users.select("users.id, users.state").includes(:organization)
在这里,我渴望加载关联organization
。我期待在对象中获取属性 id 和 user_id ,但随后我获取了所有字段。
当我们急切加载时,rails 的行为是这样,还是我在这里遗漏了什么?
我有一个这样的查询,
company.users.select("users.id, users.state").includes(:organization)
在这里,我渴望加载关联organization
。我期待在对象中获取属性 id 和 user_id ,但随后我获取了所有字段。
当我们急切加载时,rails 的行为是这样,还是我在这里遗漏了什么?
在您的情况下,您将获得所有公司用户而不是组织。
急切加载意味着预加载数据库行。它不会只获取属性。它加载所有关联的行。
例如:
comments = Comment.all(:select => "users.name,comment_text", :include => :user)
在这里,它不仅会从用户表中加载名称。它将从数据库中获取所有用户行。因此,您不必触发额外的查询。还有一件事是,include
当您具有包含表的属性时,会忽略使用 select 子句。有关更多信息,请通过 ryan bates riascast 了解加入与包括:http ://railscasts.com/episodes/181-include-vs-joins