Select has_many 协会的后代 Rails 4
Select descendants from has_many association in Rails 4
所以我有一个列表 sources
和 entries
。条目有一个字段 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
所以我有一个列表 sources
和 entries
。条目有一个字段 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