В настоящее время у меня есть следующие три модели:
class Vacancy < ActiveRecord::Base
# Database Associations
has_many :vacancy_occupations, :foreign_key => :vacancy_id
has_many :occupations, :through => :vacancy_occupations
belongs_to :country
belongs_to :employer
# Database Validations
validates_presence_of :name, :title, :description
end
class VacancyOccupation < ActiveRecord::Base
belongs_to :vacancy, :foreign_key => :vacancy_id
belongs_to :occupation, :foreign_key => :concept_id
end
class Occupation < Concept
end
class Concept < ActiveRecord::Base
# Database Associations
has_many :labels
has_many :vacancy_occupations, :foreign_key => :concept_id
has_many :cv_occupations, :foreign_key => :concept_id
has_many :vacancies, :through => :vacancy_occupations
has_many :cvs, :through => :cv_occupations
# Database Validations
validates_presence_of :uri
validates_uniqueness_of :uri
end
Я ищу механизм, который выбирает все вакансии, которые имеют данную профессию. В настоящее время я могу получить его с помощью следующего утверждения:
@vacancies = Vacancy.joins(:vacancy_occupations).where('vacancy_occupations.concept_id' => occupation_ids).uniq
Но мне было интересно, есть ли более чистый синтаксис для этого? Я играл с опциями включения и пробовал разные модели в качестве отправной точки, но я, похоже, безнадежно растерялся.