是否可以从用户表中急切加载特定条目,以及通过belong_to
附加的所有关联表。
例如,我有users
表,accounts
和patients
表,belong_to :user
。如果我想获取特定的User表条目并eager_load相关的表,类似于这样:
user = User.find_by_email("testemail@here.com").eager_load(:accounts, :patients)
我该怎么做?
答案 0 :(得分:1)
你很亲密。尝试将关联放在eager_load调用中的数组中,如下所示:
user = User.includes([:accounts, :patients]).find_by(email: "testemail@here.com")
现在您已经包含了关联的表,然后找到了您的用户,您可以从用户的其他表中调用任何属性,而无需从数据库中触发另一个查询。例如,一旦运行,您可以执行以下操作:
all_user_accounts = user.accounts
这不会在数据库中触发查询,而是从内存中加载。
如果使用#eager_load,则执行一个查询,而包含将根据其认为必要的内容在一个或两个中执行。那么#includes是什么?它决定了你将采用哪种方式。你让Rails处理这个决定。
查看本指南,了解有关rails中的includes / eager_load / preload的详细信息: http://blog.arkency.com/2013/12/rails4-preloading/