加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 22:10:50 所属栏目:百科 来源:网络整理
导读:我正在使用rails gem as-taggable,并在两个上下文中标记帖子:标签和主题. 要返回所有主题标签的散列,到目前为止,我可以使用代码: Post.tag_counts_on(:topics) 但是,我已经创建了一定数量的设置主题标签,如果这些主题标签中的某些标签当前没有用作帖子上的
我正在使用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}

我希望能回答你的问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读