我的模型类是这样描述的:
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
类MyModel
:
taggable_type
或者:
ActsAsTaggableOn::Tag.for_context(:tags).where(taggable_type: 'MyModel').pluck(:name)