2010-03-19 3 views
0

У меня есть следующие модели:Rails отношение выберите

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 

Идея заключается в том, что пользователь has_and_belongs_to_many курсы, курс has_many тесты, и каждый тест has_and_belongs_to_many пользователей (результаты). Итак, какой лучший запрос выбрать каждый Результат Курс (не тест), а также запрос на выбор каждого результата с одного курса, но от одного пользователя.

Спасибо!

+0

Как сделать это? –

+0

Давая голоса на ответы, которые, по вашему мнению, хороши. Выбрав зеленую галочку (ака «Ответ на мой вопрос») на ответ, который, по вашему мнению, является лучшим и который решил вашу проблему. –

ответ

2

Чтобы получить результаты определенного курса - учитывая, что единственным мостом между ними является тестовая модель, вам нужно будет включить тест в запрос.

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

Для второго запроса:

Result.find(:all, :conditions => ["user_id = ? AND tests.course_id = ?",@user.id, @course.id], :include => :test) 
Смежные вопросы