1

私は2つのモデルを持っています:

class Employee < ActiveRecord::Base
  has_many :projects
end

class Project < ActiveRecord::Base
  acts_as_taggable_on :skills, :roles
end

プロジェクトに関連付けられたタグを使用している従業員を見つけたいです。geokit-railsプラグインは、「:through」関係を使用して、同様の概念をサポートします。

理想的には、次のことができるでしょう。

  • 条件に含めるタグ(スキル、役割など)を指定します
  • タグが一致するプロジェクトの総数で従業員を注文します
  • タグクラウドを構築する目的で、各従業員の一致するタグの数にアクセスできる

どんな考えでもいただければ幸いです。

4

1 に答える 1

1

タグ付け可能な行為が、あなたが直接探しているものをサポートしているかどうかはわかりません。has_manyただし、acts_as_taggable_onメソッドがモデルに2つの関係を追加することを知っていると、目的の結果が得られる場合があります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'])

それを拡張して、探しているさまざまなカウントを実行できる場合もあります。

于 2010-04-25T03:43:14.887 に答える