2013-07-10 66 views
0

我有三个表skill_development,training_programs和参与者。 skills_development有许多training_programs,training_programs有许多参与者。 training_programs也有不同的类别A-F,参与者有不同的性别。Ruby SQL查询相关属性

我希望能够访问属于女性且属于培训计划A-C的技能发展中的所有参与者。

有没有办法用单个查询来做到这一点?

我可以做

tp = @skills_development.training_programs.where("category = ?", "A") 

得到所有A类

p = @skill_development.participants.where("gender = ?", "female") 

的培训计划和所有女性参与者

但如何搭配这些一起炒我的大脑。我想你可能只是

tp = @skills_development.training_programs.where("category = ?", "A") 
tp.participants.where("gender = ?", "female") 

,但我得到

NoMethodError: undefined method `participant' for #<ActiveRecord::Relation:0x007fc7e6bcdaa8> 

什么想法?

回答

1

你应该加入表格。

http://guides.rubyonrails.org/active_record_querying.html#joining-tables

应该工作:

participants = Participant.joins(:training_programs). 
    where('training_programs.skills_development_id' => @skills_development.id). 
    where('training_programs.category' => %w(A B C)). 
    where('participants.gender' => 'female') 
+0

感谢的人那是什么,我需要感谢的参考! – TheLegend