0

性別が男性または女性である @participants をすべて取得しようとしています。私は AR を表面化させたばかりで、すべての可能性を掘り下げていますが、このクエリを実行するのは難しいと感じています。

  • ユーザー (user_id) has_profile
  • プロフィールの所属ユーザー
  • 参加者 (participant_id) belongs_to ユーザー、プロフィール

私は参加者 ID を持つすべての参加者を取得しようとしていますが、プロファイル ( user_id ) には性別 = '男性' または '女性' があります

@participants_male に結果を入力してもらう最短の方法は何でしょうか?

whereステートメントとの関係から抜け出す方法がわかりません。誰かが正しい方向に私を助けることができますか? どうも!

@participants_male = Participant.where(
4

2 に答える 2

2

性別はusersテーブルの列ですか?もしそうなら:

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

編集-性別がプロファイルテーブルにある場合:

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

また、このrailscastをチェックして、joinsとの違いを理解することをお勧めしincludesます。そうすれば、自分のケースで何が優れているかを判断できます。

于 2012-07-17T22:12:25.963 に答える
2

アクティブ レコード クエリに関する Rails ガイドは、優れたリソースです。クエリは次のようになります。

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

includesまたは、代わりに使用できますjoins

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

インクルードと結合を見て、特定のケースにどちらが適しているかを確認してください。

于 2012-07-17T22:07:57.517 に答える