我在我的Rails應用這些模型:最佳方式
class Course < ActiveRecord::Base
has_many :topics
end
class Topic < ActiveRecord::Base
has_many :parts
belongs_to :course
end
class Part < ActiveRecord::Base
has_many :quizzes
belongs_to :topic
end
class Quiz < ActiveRecord::Base
has_many :quiz_submissions
belongs_to :part
end
class QuizSubmission < ActiveRecord::Base
belongs_to :quiz
end
現在我想所有QuizSubmissions'課程ID,即quiz_submission.quiz.part.topic.course.id
每個quiz_submission。
我目前的代碼是QuizSubmission.all.map{|qs| qs.quiz.part.topic.cours.id}
這是非常慢,我也試過joins
,仍然沒有提高性能。也許我錯誤地使用了joins
。
有什麼建議嗎?我應該讓QuizSubmission belongs_to :course
?謝謝!
你可以做'QuizSubmission belongs_to的:course' *如果*測驗提交有一個'course_id'。你可以展示你爲'join'案件嘗試的嗎? – lurker 2014-10-28 10:25:11
你希望你的桌子有多少行?你是否想過對桌子進行去規範化? – spickermann 2014-10-28 10:32:50
嘗試:'QuizSubmission.joins(:測驗=> {:part => {:topic =>:course}})。select('courses.id')' – Surya 2014-10-28 11:54:55