0

我有三个表技能_开发、培训_程序和参与者。Skills_development 有很多 training_programs,training_programs 有很多参与者。training_programs 也有不同的类别 AF,参与者有不同的性别。

我希望能够访问技能开发中的所有女性并且属于培训计划 AC 的参与者。

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

我可以

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>

有任何想法吗?

4

1 回答 1

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')
于 2013-07-10T09:41:42.060 回答