views:

33

answers:

1

Hi, I have the following models:

class User < ActiveRecord::Base
    has_many :results, :dependent => :destroy
    has_many :participants, :dependent => :destroy
    has_many :courses, :through => :participants
end

class Course < ActiveRecord::Base
    has_many :tests, :dependent => :destroy
    has_many :participants, :dependent => :destroy
    has_many :users, :through => :participants
end

class Result < ActiveRecord::Base
    belongs_to :test
    belongs_to :user
  end

class Test < ActiveRecord::Base
    belongs_to :course
    has_many :results, :dependent => :destroy
end

The Idea is that a user has_and_belongs_to_many courses, the course has_many tests, and every test has_and_belongs_to_many users (results). So what is the best query to select every Result from a single Course (not test), and also the query to select every Result from a single Course, but from one user.

Thanks!

+1  A: 

To get the results from a specific course - given that the only bridge between the two is the test model you will need to include the test in the query.

Result.find(:all, :conditions => ["tests.course_id = ?",@course.id], :include => :test)

For the second query:

Result.find(:all, :conditions => ["user_id = ? AND tests.course_id = ?",@user.id, @course.id], :include => :test)
Apie