我正在使用rails gem as-taggable,并在两个上下文中标记帖子:标签和主题.
Post.tag_counts_on(:topics)
但是,我已经创建了一定数量的设置主题标签,如果这些主题标签中的某些标签当前没有用作帖子上的标签,则上面的代码不会返回上述主题.
我想知道是否有一种方法可以根据上下文返回所有相关的标签 – 我希望有一个解决方案:
topics = Tag.topics
为了实现这个解决方案,我创建了一个Tag.rb模型:
class Tag < ActiveRecord::Base has_many :relationship_topics,:foreign_key => "topic_followed_id",:dependent => :destroy has_many :topic_followers,:through => :relationship_topics,:source => :topic_follower end
有人知道我能否根据上下文返回所有标签?
解决方法
我从来没有使用
acts-as-taggable-on,但是快速浏览代码表明,你可以做到:
# to get all the tags with context topic with counts ActsAsTaggableOn::Tagging. includes(:tag). where(:context => "topics"). group("tags.name"). select("tags.name,COUNT(*) as count")
您应该看看ActsAsTaggableOn::Tagging,ActsAsTaggableOn::Tag和db / migrations文件夹中的迁移文件,以了解如何处理.
tags = ActsAsTaggableOn::Tag.includes(:taggings). where("taggings.context = 'topics'"). select("DISTINCT tags.*") # usage tags.each {|tag| puts tag.name}
我希望能回答你的问题.