2011-05-18 41 views
0

我目前有以下三种模式:通过协会查找模型

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 

但我想知道是否有一个更干净的语法来完成这项工作?一直玩的包括选项,并尝试从不同的模型作为出发点,但我似乎失去了绝望。

回答

0

您可以使用范围来获得更清晰的语法

0

我不确定这是否是正确的语法,但如果你能得到所有职业的父母,你基本上会得到所有职业空缺的清单。

Occupation.all.vacancies 
+0

将结束我在那有一个职业联刚结束的所有空缺,而我只是想挂一个特定职业的空缺。 – 2011-05-18 11:29:13

+0

职业= Occupation.find(...)then,occupation.vacancies – jaydel 2011-05-18 11:39:02