Найти модель через ассоциации - PullRequest
0 голосов
/ 18 мая 2011

В настоящее время у меня есть следующие три модели:

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

Но мне было интересно, есть ли более чистый синтаксис для этого? Я играл с опциями включения и пробовал разные модели в качестве отправной точки, но я, похоже, безнадежно растерялся.

Ответы [ 2 ]

0 голосов
/ 18 мая 2011

вы можете использовать области видимости для получения более чистого синтаксиса

0 голосов
/ 18 мая 2011

Я не уверен, что это правильный синтаксис, но если вы можете получить родителей всех профессий, вы в основном получите список всех вакансий, которые имеют профессии.

Occupation.all.vacancies
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...