在“acts-as-taggable-on”中,如何获取模型所有实例中使用的所有标签?

问题描述 投票:0回答:1

我的模型类是这样描述的:

class MyModel < ApplicationRecord
  acts_as_taggable_on :tags
end

如何获取该模型类的任何实例使用的所有

tags

我尝试过:

MyModel.tags_on(:tags).pluck(:name)

它可以工作,但它会生成一个查询,其中包含我的模型的所有实例的 id:

SELECT tags.* FROM `tags` JOIN (SELECT `taggings`.`tag_id` FROM `taggings` WHERE (taggings.taggable_type = 'MyModel') AND (taggings.taggable_id IN ( **[ALL THE IDS]** ) GROUP BY `taggings`.`tag_id`) AS taggings ON taggings.tag_id = tags.id

同:

MyModel.all_tags.pluck(:name)

我也尝试过:

ActsAsTaggableOn::Tag.for_context(:tags).pluck(:name)

但它会返回所有模型类上下文中的所有

tags
,而不仅仅是
tags
    

ruby-on-rails acts-as-taggable-on
1个回答
0
投票
MyModel

taggable_type

或者:

ActsAsTaggableOn::Tag.for_context(:tags).where(taggable_type: 'MyModel').pluck(:name)

© www.soinside.com 2019 - 2024. All rights reserved.