質問

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'])

それを拡張して、探しているさまざまなカウントも行うことができるかもしれません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top