2011-12-24 5 views
0

Iは、ユーザによる各コースの一意性を検証モデルEnrollment有する:スコープを使用して、ループすることなくユニークな単一レコードにアクセスできますか?

validates_uniqueness_of :user_id, :scope => :course_id 

私はユーザによってコースを絞り込む過程で通過することができるEnrollmentモデルでスコープを作成:

scope :course, lambda { |course| where(:course_id => course.id) } 

こうすることで、私が呼び出すことができます。

current_user.enrollments.course(@course) 

しかし、それは、結果を通じて私にループを作る、でもthoug hの結果は1つだけです(各ユーザーに固有のコース)。これは問題ありませんが、スコープを作成してから、結果をループすることなくレコードにアクセスする方法があるようです。

アイデア?私は何かが欠けているように感じる。

答えて

1

これを試してみてください:LIMIT 1文でSQLクエリを生成し、配列にそれをラップせずに直接モデルを返します

current_user.enrollments.course(@course).first 

あなたの範囲についての小さなメモ。あなたのEnrollmentモデルはcourseアソシエーション(has_one :courseと仮定しています)by_courseのようにスコープの異なる名前を指定して、courseアソシエーションとの衝突を防ぎ、指定した登録のコースを取得できるようにしてください。

+0

Duhhhhh!ありがとう – Marc

+0

ありがとうございますが、より多くの人間が、upvotingと正解を受け入れるStackOverflowでより効率的です=) –

関連する問題