ホームページ >データベース >mysql チュートリアル >ActiveRecord を使用して Rails アプリケーションで未登録のコースを検索する方法

ActiveRecord を使用して Rails アプリケーションで未登録のコースを検索する方法

Barbara Streisand
Barbara Streisandオリジナル
2024-12-30 12:21:09283ブラウズ

How to Find Unenrolled Courses in a Rails Application Using ActiveRecord?

学生の登録に関連付けられていないコースの取得

質問:

次のモデルで Rails アプリケーションを使用する: Student 、Course、および StudentEnrollment に関連付けられていない Courses テーブル内のコースのリストをクエリするにはどうすればよいですか? StudentEnrollment テーブルを介して学生を取得しますか?

解決策:

これを実現するには、ActiveRecord の JOIN 操作を利用できます。ただし、テーブル名を引数として受け入れる joins() メソッドとは異なり、生の SQL 文字列を渡してカスタム結合条件を指定することもできます。

特定のクエリの場合:

SELECT *
FROM Courses c LEFT JOIN StudentEnrollment se ON c.id = se.course_id
WHERE se.id IS NULL AND se.student_id = <SOME_STUDENT_ID_VALUE> and c.active = true

Rails では、次のようにこのクエリを実行できます:

Course.joins("LEFT JOIN student_enrollments ON courses.id = student_enrollments.course_id")
      .where("student_enrollments.id IS NULL AND student_enrollments.student_id = ?, courses.active = ?", <SOME_STUDENT_ID_VALUE>, true)

このクエリは、指定された学生に関連付けられていないすべてのコースを取得しますStudent_enrollments テーブルに追加すると同時に、アクティブなコースのみが含まれるようにします。

以上がActiveRecord を使用して Rails アプリケーションで未登録のコースを検索する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。