Select has_many 协会的后代 Rails 4

Select descendants from has_many association in Rails 4

所以我有一个列表 sourcesentries。条目有一个字段 source_id 来引用 Source。现在我需要通过 sources 中的字段 user_id 来获取 entries 的数量 sources

所以基本上我需要 select 来自某个 user_id 的所有 source ID,然后通过这些 ID,获得一些 entries。我尝试了以下方法:

entries_count = Source.where('user_id = ?', user_id).entries.count 

但这显然行不通。

实现这一目标的方法是什么?

entries_count = Sources.where('user_id = ?', user_id) 将 return 一个集合,而不是一个对象。所以你必须先获取每个集合元素的条目,然后计数:

entries_count = Sources.where('user_id = ?', user_id).map(&:entries).flatten.count

不相关的事情:你的模型真的叫 Sources 还是打错了,实际上是 Source

我会使用

从条目到来源
Entry.joins(:source).where(sources: {user_id: user_id}).count