gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 19:01:07 25 4
gpt4 key购买 nike

我正在使用 Rails gem act-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}

我希望这能回答您的问题。

关于ruby-on-rails - 根据上下文返回所有标签 - ActsAsTaggableOn,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7169787/

25 4 0