レールプラグインACTS_AS_TAGGABLE_ON:スルー
-
01-10-2019 - |
質問
2つのモデルがあります。
class Employee < ActiveRecord::Base
has_many :projects
end
class Project < ActiveRecord::Base
acts_as_taggable_on :skills, :roles
end
プロジェクトに関連付けられたタグを使用している従業員を見つけたいと思います。 Geokit-Railsプラグインは、その「スルー」関係を使用して、同様の概念をサポートしています。
理想的には、私はできるでしょう:
- 条件に含まれるタグ(すなわち、スキル、役割)を指定します
- タグを一致させるプロジェクトの総数で従業員を注文する
- タグクラウドを構築する目的で、各従業員のマッチングタグカウントにアクセスできます
どんな考えも感謝しています。
解決
タグセブルとしての行為があなたが直接探しているものをサポートしているかどうかはわかりません。ただし、acts_as_taggable_onメソッドが2つ追加することを知って、あなたが望むものを手に入れることができるかもしれません has_many
あなたとの関係 Project
モデル。たとえば、プロジェクトのスキルに書くことができるいくつかのタグがある従業員を見つけるために
Employee.all(:joins => {:projects => :taggings}, :conditions => ['taggings.context = ? and taggings.tag_id in (?)', 'skills', [4, 8, 15, 16, 23, 42])
もちろん、興味のあるタグIDを知る必要があります。
Employee.all(:joins => {:projects => :base_tags}, :conditions => ['taggings.context = ? and tags.name in (?)', 'skills', ['skill_a', 'skill_b', 'skill_c'])
それを拡張して、探しているさまざまなカウントも行うことができるかもしれません。
所属していません StackOverflow