ruby-on-rails 在“acts-as-taggable-on”中,如何获取Model的所有示例中使用的所有标签?

r9f1avp5  于 12个月前  发布在  Ruby
关注(0)|答案(1)|浏览(86)

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

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,而不仅仅是MyModel

e0bqpujr

e0bqpujr1#

我的第一个想法是只取一个返回所有标签的查询,并将其细化为taggable_type

ActsAsTaggableOn::Tag.for_context(:tags).where(taggings: { taggable_type: 'MyModel'}).uniq.pluck(:name)

相关问题