سؤال

لدي نموذجان:

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 لديها دعم لما تبحث عنه مباشرة. ومع ذلك ، قد تكون قادرًا على الحصول على ما تريد معرفة أن طريقة ACTS_AS_TAGGABLE_ON تضيف اثنين has_many العلاقات مع الخاص بك Project نموذج. على سبيل المثال ، للعثور على الموظفين حيث تحتوي مهارات المشروع على بعض العلامات التي يمكنك كتابتها

Employee.all(:joins => {:projects => :taggings}, :conditions => ['taggings.context = ? and taggings.tag_id in (?)', 'skills', [4, 8, 15, 16, 23, 42])

بالطبع يتطلب ذلك معرفة معرفات العلامة التي تهتم بها ، بدلاً من ذلك إذا كان لديك أسماء العلامات

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