ruby-on-rails – 根据上下文返回所有标签 – ActsAsTaggableOn

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 根据上下文返回所有标签 – ActsAsTaggableOn前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用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}

我希望能回答你的问题.

原文链接:https://www.f2er.com/ruby/266367.html

猜你在找的Ruby相关文章