我是Rails的新手,目前在标记系统上工作,可以在其中为事件分配多个标记,并为多个事件分配相同的标记。
Tag模型如下所示:
has_many :taggings,
has_many :events, through: :taggings
事件模型如下所示:
belongs_to :user
has_many :taggings
has_many :tags, through: :taggings
我有三个这样的表:
TAGS
id | name (string)
EVENTS
id | name (string)
TAGGINGS
id | tag_id | event_id
现在,我尝试获取最常用的10个标签。我本质上需要将标签和标签表连接在一起,并按标签中的tag_id进行分组。像这样的东西:
Tagging.group('tag_id').order('count_id DESC').limit(10).count('id')
但是,通过加入标记,以便我可以抓取名称字段。
试试这个:
Tag.select('tags.*, COUNT(taggings.id) AS tagging_count').
joins(:taggings).group('tags.id').
order('tagging_count DESC').
limit(10).pluck(:name)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句