ActsAsTaggableOn:获取 has_many 关系中子对象的所有标签
ActsAsTaggableOn: Get all tags for child objects in a has_many relation
我的 rails 应用有机构级帐户,用户很多。
每个机构都有很多项目。
一个项目acts_as_taggable和机构中的用户可以将标签添加到他们机构的项目中。
我想查询属于特定机构的项目的所有标签列表。
例如 Project.where(institution_id: 1).tags
(不存在)
是否需要将项目的机构设置为tags的owner来方便,然后按owner查询?
class Institution < ActiveRecord::Base
acts_as_tagger
end
class Project < ActiveRecord::Base
acts_as_taggable
end
然后设置标签时:
@current_user.institution.tag(@some_project, with: 'tag1, tag2')
...并获取标签:
@current_user.institution.owned_tags
或者,有没有不需要设置所有权的方法?
当然,做类似的事情:
ActsAsTaggableOn::Tag.
joins(:taggings).
where(taggings: {taggable: current_institution.projects})
该语法可能需要进行一些调整(尽管它适用于我的数据)。
我假设你有办法获得属于某个机构的项目 - 我已经用 current_institution.projects
挥手了。酌情替换为您自己的代码。
无论如何,我相信这应该会引导您朝着正确的方向前进。
我的 rails 应用有机构级帐户,用户很多。
每个机构都有很多项目。
一个项目acts_as_taggable和机构中的用户可以将标签添加到他们机构的项目中。
我想查询属于特定机构的项目的所有标签列表。
例如 Project.where(institution_id: 1).tags
(不存在)
是否需要将项目的机构设置为tags的owner来方便,然后按owner查询?
class Institution < ActiveRecord::Base
acts_as_tagger
end
class Project < ActiveRecord::Base
acts_as_taggable
end
然后设置标签时:
@current_user.institution.tag(@some_project, with: 'tag1, tag2')
...并获取标签:
@current_user.institution.owned_tags
或者,有没有不需要设置所有权的方法?
当然,做类似的事情:
ActsAsTaggableOn::Tag.
joins(:taggings).
where(taggings: {taggable: current_institution.projects})
该语法可能需要进行一些调整(尽管它适用于我的数据)。
我假设你有办法获得属于某个机构的项目 - 我已经用 current_institution.projects
挥手了。酌情替换为您自己的代码。
无论如何,我相信这应该会引导您朝着正确的方向前进。