在多个嵌套急切加载关联的条件下指定条件 -- ruby-on-rails 领域 和 activerecord 领域 和 eager-loading 领域 相关 的问题

Specifying Conditions on Multiple Nested Eager Loaded Associations


简体版||繁體版
0
vote

问题

中文

我正在尝试查询ActiveRecord多嵌套加载的联想,条件如下所示:

  FOO1  

显然这个查询是错误的,但基本上我想要达到的是user.Books为某一学校的关系。

我的模型结构是:

  FOO2  

任何想法?提前致谢。

英文原文

I'm trying to query on ActiveRecord multiple nested eager loaded associations with conditions like so:

user.books.includes(slot: [room: :school]).where("books.slot.room.school.id = 1") 

Obviously this query is wrong, but basically what I'm trying to reach is a relation of user.books for a certain school.

My model structure is:

class User < ActiveRecord::Base   has_many :books   has_many :slots, through: :books   has_many :rooms, through: :slots   has_many :schools end  class Book < ActiveRecord::Base   belongs_to :user   belongs_to :slot end  class Slot < ActiveRecord::Base   has_many :books   belongs_to :room end  class Room < ActiveRecord::Base   belongs_to :school   has_many :slots end  class School < ActiveRecord::Base   has_many :users   has_many :rooms   has_many :slots, through: :rooms   has_many :books, through: :slots end 

Any ideas? Thanks in advance.

        

回答列表

1
 
vote
vote
最佳答案
 

includes 急于加载关联记录,而 joins 做你想做的事。

这个问题已经多次被问到这里。请确保在您询问一个之前查看并尝试在此处查找类似的问题。

所以你想改变这样的代码:

user.books.joins(slot: [room: :school]).where(schools: { id: 1 })

 

includes eager loads association records, while joins does what you want to do.

This question has been asked here numerous times. Please make sure that you look and try to find a similar question here before you ask one.

So you want to change your code like this:

user.books.joins(slot: [room: :school]).where(schools: { id: 1 })

 
 
   
   

相关问题

3  为什么这些嵌套未嵌入的块不会在轨道3工作时删除Rails 4中的Default_scope?  ( Why wont these nested unscoped blocks work to remove default scope in rails 4 w ) 
我的问题 似乎轨道4忽略嵌套的未涂布块(而且在轨道3中它们也可以。我一直疯狂地咕噜咕噜,找不到任何表明这里发生变化的东西。任何想法如何在Rails 4中获得这个工作4? 我正在做什么 我正在使用default_scope for multi-tencence,如#388与scopes的多特语/ a>。有些管理...

0  如何急于加​​载WCF RIA Services / Linq2sqldomainModel  ( How to eager load in wcf ria services linq2sqldomainmodel ) 
我在我的视图(XAML)中有一个Databound网格,并将项目源指向ReportScollection。报告实体有三个原语和一些复杂类型。这三个如DataGrid所期望的。此外,报告实体具有类型存储的属性。通过getReports域方法加载报告时,我很快就弄错了只返回基元,而不是一些深度的整个图。因此,由于我也想要...

0  Laravel 5渴望加载用户关系  ( Laravel 5 eager loading user relationship ) 
我有一个 User model, User 与 Widget 的关系有n-n关系。这种情况下的枢轴表称为 dashboards 。 dashboard 表具有以下列: x , y , import javax.persistence.*; import java.io.Serializable; import...

0  在NHibernate 3.2中加载导航属性  ( Loading navigation properties in nhibernate 3 2 ) 
我有这些实体: MyDB ->Programmability->StoredProcedures2 我想加载 9988766613 与它相关 998876614 s和相关 MyDB ->Programmability->StoredProcedures5 s的计数 MyDB ->Programmabili...

64  Eloquent渴望加载订单  ( Eloquent eager load order by ) 
我有rooquent查询的问题。我使用急切加载(一对一的关系)来获得"考试" ,使用下面的代码。 end{cmd}3 ,我想在'考试'中的'结果'列订购收到的行。我正在使用 end{cmd}4 但它不起作用。任何想法如何做到这一点? ...

3  EF代码首先渴望加载和orderby问题  ( Ef code first eager loading and orderby problem ) 
我有两个称为类别和产品的实体,具有1:n关系。 我想用孩子的孩子获得一个类别。 这是我的linq: _db.Categories.Where(c => c.CategoryID == catID) .Include(c => c.Products.OrderBy(p => p.ProductID)) ...

2  渴望加载自我  ( Eager loading on self ) 
reader.rb has_many :book_readers, dependent: :destroy has_many :books, -> { where('published_at < ?', Time.zone.now) }, through: :book_readers afte...

7  选择聚合时,您如何处理LINQ到NHibernate的获取异常?  ( How do you deal with linq to nhibernates fetch exception when selecting aggrega ) 
我在ASP.NET MVC网格(Telerik专门)上使用LINQ到NHibernate的IQueryable实现,在那里我知道我需要热切地获取此特定网格的东西。 所以我有查询,看起来像这样: var query = from s in repository.Query<MyClass>() ...

3  rails错误:加入+包括  ( Rails error joins include ) 
我有以下型号: class Person < ActiveRecord::Base has_many :images has_one :preference end class Image < ActiveRecord::Base belongs_to :person end class Prefere...

1  如何获得急切装载的条件,以延迟加载,以后与ActiveRecord和Rails一起加载  ( How to get an eager loaded conditional to be lazy loading later on with activere ) 
首先让我显示一些代码。 class User has_and_belongs_to_many :roles named_scope :employees, { :conditions => ["roles.name = 'Employee'"], :include => :roles } end 好...

13  Nibernate:如何在单程往返数据库中执行急切的子选择获取许多儿童和孙子(对象图)?  ( Nhibernate how to perform eager subselect fetching of many children grandchil ) 
首先,请不要试图争论我争论急切加载 - 遍历对象图并导致(通过延迟加载)甚至超过一个往返数据库的往返而不是一个选项。 我有一个大的对象图。我想获取根对象,加上一个子集它的孩子,孙子孙女,伟大的孙子等。目前我通过创建多个 Future 对象(带有条件)来这样做在每个人,我做 SetFetchMode("...", Fe...

32  使用nibernate 3.0.0时,在使用Nibernate时搏斗的笛卡尔产品(X-Join)  ( Fighting cartesian product x join when using nhibernate 3 0 0 ) 
我在数学时坏,但我善意地知道什么笛卡尔产品。 这是我的情况(简化): public class Project{ public IList<Partner> Partners{get;set;} } public class Partner{ public IList<PartnerCosts> Costs{...

8  Rails渴望与所选属性加载关联  ( Rails eager load association with selected attributes ) 
任何人都可以告诉我是否可以急于加载关联,但只返回特定属性? 我想用他们的帐户检索一些订单,但只需要帐户名称。 var provider = new MultipartFormDataStreamProvider(uploadDirectoryPath); await Request.Content.ReadAs...

1  急切加载USIG批量获取  ( Eager loading usig batch fetching ) 
是否可以使用批处理获取的evernate实现的JPA来实现急于加载? 你可能想知道为什么我想做这么奇怪的事情,所以让我解释一下。 我们有两个实体 A 和 B 。从 A 到 B 。 我要使用搜索加载 A 实体,并且我希望在从存储库返回之前完全加载它们。 但是因为有很多 A 很少 B 的所有(相关) var m...

2  渴望加载“二级”关联对象的麻烦  ( Trouble on eager loading second degree associated objects ) 
我在铁轨上运行红宝石3.1。我想通过应用一些条件渴望加载"二等学位" 相关对象,但我遇到麻烦。 似乎已经解决了我的问题< / a>通过使用: article_categories = article .categories .includes(:comments => [:category_r...

1  渴望加载和使用“在哪里”方法  ( Trouble on eager loading and using the where method ) 
我在铁轨上运行红宝石3.1。我正在使用 includes 方法,我想了解为什么当我在急切加载的集合上调用 where 方法时,它重新加载关联的对象而不是查找该对象急切装载的集合。由于所有相关对象都已急于加载,我希望 where 方法是 not 命中数据库以重新加载这些对象! 即,我有以下内容: article_c...

4  Rails:构建涉及多态性关联和STI的查询  ( Rails structuring a query involving a polymorphic association and sti ) 
我正在尝试找到关于照片最新的10个评论,因此我可以将它们集成到我的Rails 3.0.3应用程序上的活动源中。 我有一个照片 model,它使用单表继承来从上载型号继承: class Upload < ActiveRecord::Base ... end class Photo < Upload ...

2  处理急切加载和未保存的相关记录  ( Handling eager loading and unsaved associated records ) 
如何处理一个场景,其中相关的记录可能不会保存到数据库? 如果我有 class Blog < ActiveRecord::Base has_many :posts end class Post < ActiveRecord::Base has_many :comments end 然后添加 incl...

2  实体框架代码首先 - 很多 - 包括条件  ( Entity framework code first many to many include conditional ) 
我有两个实体 Store 和 Catalog ,使用fluent api具有许多关系。我想通过 id 获取商店,其中所有目录都等于"已发布" 。 下面我尝试编写以下查询,但没有得到预期的结果。 var store = context.Stores.Include("Catalogs").Where(s => s....

0  渴望使用实体框架加载时缺少信息  ( Missing information when eager loading with entity framework ) 
在尝试急于加载PriceGridrow时,填充PriceGridColumn的索引和值属性,但ID和MaplyGridRoWID不是。如果我尝试明确地包括PriceGridColumns,它会获得重复列(即,我有10列,但EF返回的对象有20个),返回的列中的一半是完全填充的,另一半不。 我一直拉着我的头发剩下的东...

20  渴望加载:做事的正确方法  ( Eager loading the right way to do things ) 
我在铁轨上运行红宝石3.1。我阅读了关于渴望加载的以下文章和文档,我想找到做事的正确方法: eAger加载关联 [官方文档] activeRecord ::关联:: classmethods (参见章节"渴望加载关联" )[官方文档] eager loading [博客文章] #2 说: ...

2  Rails 3急切装载协会的条件  ( Rails 3 conditions on eager loaded association ) 
我在急切加载时在关联表上使用条件遇到rails 3。似乎Rails正在加载原始模型数据时应用条件,因此除非子/相关型号的非零数量匹配条件,否则不会加载父模型。在代码中更容易解释(例如,简化): @post = Post.includes(:comments).where(:comments => { :appro...

1  Nibernate N + 1问题在Spark View Engine ASP.NET MVC中建设菜单时  ( Nhibernate n1 issue when building menu in spark view engine asp net mvc ) 
我有一个拥有1000个类别的网站。我正在构建一个菜单,列出rover类别和悬停上的悬停显示子类别(以及可能更多的一个级别)。 在我的spark视图中我有这个: <ul class="menu"> <li each="var category in categories"> ...

6  Rails Admin急切加载列表视图的关系  ( Rails admin eager loading relations for list view ) 
我们有一个列表视图,用于型号 Ticket 在Rails管理中加载非常缓慢。 class Ticket < ActiveRecord::Base belongs_to :crew end 慢速的原因是我们通过访问其他相关模型的方法 rails_admin_pretty_print 显示票证的 crew ...

12  实体框架 - 急切加载相关实体  ( Entity framework eager loading related entities ) 
我正在使用实体框架4使用mvc,需要确保在Controller方法返回之前加载了我的视图中的任何引用的实体,否则视图吐出了可怕的: objectContext实例已被配置,无法再用于需要连接的操作。 在直接从上下文中选择时,我可以刚刚使用 Include(string) 方法强制将它们包含在生成的SQL查询中:...

相关问题

3  为什么这些嵌套未嵌入的块不会在轨道3工作时删除Rails 4中的Default_scope? 
0  如何急于加​​载WCF RIA Services / Linq2sqldomainModel 
0  Laravel 5渴望加载用户关系 
0  在NHibernate 3.2中加载导航属性 
64  Eloquent渴望加载订单 
3  EF代码首先渴望加载和orderby问题 
2  渴望加载自我 
7  选择聚合时,您如何处理LINQ到NHibernate的获取异常? 
3  rails错误:加入+包括 
1  如何获得急切装载的条件,以延迟加载,以后与ActiveRecord和Rails一起加载 
13  Nibernate:如何在单程往返数据库中执行急切的子选择获取许多儿童和孙子(对象图)? 
32  使用nibernate 3.0.0时,在使用Nibernate时搏斗的笛卡尔产品(X-Join) 
8  Rails渴望与所选属性加载关联 
1  急切加载USIG批量获取 
2  渴望加载“二级”关联对象的麻烦 
1  渴望加载和使用“在哪里”方法 
4  Rails:构建涉及多态性关联和STI的查询 
2  处理急切加载和未保存的相关记录 
2  实体框架代码首先 - 很多 - 包括条件 
0  渴望使用实体框架加载时缺少信息 
20  渴望加载:做事的正确方法 
2  Rails 3急切装载协会的条件 
1  Nibernate N + 1问题在Spark View Engine ASP.NET MVC中建设菜单时 
6  Rails Admin急切加载列表视图的关系 
12  实体框架 - 急切加载相关实体 



© 2021 it.wenda123.org All Rights Reserved. 问答之家 版权所有