所以我运行了一个.where查询来选择一组activerecords。每个记录都有一个.items关联,每个关联的项目都有一个theme_id。无论如何,我可以过滤只有那些有关联项目的theme_id为0的记录,而无需执行每个初始数组或每种显式循环?Activerecord查询过滤器之后
为了说明它更好地:
[P_0,...,P_N]就是我的。哪里过滤 每个p后获得具有[I_0,...,1-N] 关联数组每个我都有一个theme_id。我想只得到那些有一个项目,其theme_id为0.
所以我运行了一个.where查询来选择一组activerecords。每个记录都有一个.items关联,每个关联的项目都有一个theme_id。无论如何,我可以过滤只有那些有关联项目的theme_id为0的记录,而无需执行每个初始数组或每种显式循环?Activerecord查询过滤器之后
为了说明它更好地:
[P_0,...,P_N]就是我的。哪里过滤 每个p后获得具有[I_0,...,1-N] 关联数组每个我都有一个theme_id。我想只得到那些有一个项目,其theme_id为0.
我不知道你的代码库,所以这是在黑暗中刺,但你不能通过预订获得相同的数组有点逻辑?
ary = Item.where(theme_id: 0).map {|i| i.association_you_want }
ActiveRecord where
采用“散列语法”,允许您指定关联(以及这些关联的关联)。 joins
和where
之间的交互有点有趣,其中joins
需要表名,where
需要关联名称。这些哈希语法where
条件可以根据需要嵌套。
根据我的经验,最好使用哈希语法(如果可以的话)而不是使用字符串条件。
.joins(:items).where(items: {theme_id: 0})
虽然此代码段可以解决的问题,[包括一个解释](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)确实有助于改善您的帖子的质量。请记住,您将来会为读者回答问题,而这些人可能不知道您的代码建议的原因。 – DimaSan