jay*_*jay 10 tags ruby-on-rails acts-as-taggable-on ruby-on-rails-3
我正在使用rails gem act-as-taggable,并在两个上下文中标记帖子:标签和主题.
要返回到目前为止用于帖子的所有主题标签的哈希,我可以使用代码:
Post.tag_counts_on(:topics)
Run Code Online (Sandbox Code Playgroud)
但是,我已创建了一定数量的设置主题标签,如果其中某些主题标签当前未用作帖子上的标签,则上述代码不会返回所述主题.
我想知道是否有办法根据上下文返回所有相关标签 - 我希望有一个解决方案:
topics = Tag.topics
Run Code Online (Sandbox Code Playgroud)
为了实现该解决方案,我创建了一个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
Run Code Online (Sandbox Code Playgroud)
这里我有一些代码允许以下主题,但仅此而已.
有谁知道如何根据上下文返回所有标签?
rub*_*ish 16
我从未使用过act-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")
Run Code Online (Sandbox Code Playgroud)
您可能应该查看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}
Run Code Online (Sandbox Code Playgroud)
我希望能回答你的问题.
| 归档时间: |
|
| 查看次数: |
3925 次 |
| 最近记录: |