我有三个表技能发展,培训计划和参与者。技能发展有许多培训计划,培训计划有很多参与者。 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>
任何想法?
答案 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')