activerecord newbie;获取性别男/女的所有个人资料?

时间:2012-07-17 21:58:36

标签: ruby-on-rails ruby-on-rails-3 activerecord relation

我试图让所有性别为男性或女性的@参与者。 我刚刚浮出水面,现在正在深入研究所有可能性,但发现很难完成这个查询。

  • user(user_id)has_profile
  • 个人资料belongs_to user
  • 参与者(participant_id)belongs_to用户,个人资料

我试图让所有参与者都使用participant_id,其中有个人资料(user_id),他们有性别='男性'或'女性'

让@participants_male填充结果的最佳最短路径是什么?

我不确定如何从与where声明的关系中解脱出来,任何人都可以帮助我朝正确的方向发展? THX!

@participants_male = Participant.where(

2 个答案:

答案 0 :(得分:2)

active record queries上的导轨指南是一个很好的资源。您的查询看起来像这样:

@males = Participant.joins(:profiles).where('profiles.gender = "male"')

或者您可以使用includes代替joins

@males = Participant.includes(:profiles).where('profiles.gender = "male"')

查看includes vs joins,看看哪种情况适合您的具体情况。

答案 1 :(得分:2)

性别是users表中的一列?如果是这样的话:

@participants_male = Participant.includes(:users).where("users.gender = 'male'")

编辑 - 如果性别在个人资料表中:

@participants_male = Participant.includes(:profiles).where("profiles.gender = 'male'")

我还建议您检查this railscast以了解joinsincludes之间的区别,以便您可以决定哪种情况更好。