Ruby SQL查询相关属性

时间:2013-07-10 09:13:23

标签: sql ruby

我有三个表技能发展,培训计划和参与者。技能发展有许多培训计划,培训计划有很多参与者。 training_programs也有不同的A-F类别,参与者有不同的性别。

我希望能够访问技能发展中的所有参与者,这些参与者都是女性,属于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 个答案:

答案 0 :(得分: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')