在has_and_belongs_to_many上获取唯一对象

时间:2014-01-12 02:42:57

标签: activerecord ruby-on-rails-4

我有3个实体:Feeds,Episodes,Series。提供has_and_belongs_to_many集。剧集belongs_to系列。

我想要的是所有Feed的系列,以及该系列中该剧中剧集的数量。

2 个答案:

答案 0 :(得分:1)

您可以通过首先查找所有系列的ID来生成一组给定剧集的所有系列的完整列表...

# uniq insures that any duplicates are removed
ids = feed.episodes.map(&:series_id).uniq

然后自己找到系列:

series = Series.where(id: ids)

您可以使用简单count找到每个系列的剧集数:

series.each do |s|
  puts "Series #{s.name} has #{s.episodes.count} episodes"
end

答案 1 :(得分:1)

meagaranswer让我得到了以下解决方案:

ids = @feed.episodes.pluck(:series_id)
@series = Series.find(ids)

@episode_counts = Hash.new(0)
ids.each do |id|
  @episode_counts[id] += 1
end