1
試験のインスタンスを考える
class Exam < AR::Base
has_many :questions_in_exams
has_many :questions, :through => :questions_in_exams
end
class QuestionsInExam < AR::Base
belongs_to :examination
belongs_to :question
# This model also has a "question_index" attribute
end
class Question < AR::Base
has_many :questions_in_exams
has_many :examinations, :through => :questions_in_exams
end
を、私が参加し、モデルから余分 属性(と一緒にそれのすべての質問を取得したいです「question_index」のように)。どうすればこれを達成できますか?
私がない場合:
e = Examination.find(1)
questions = e.questions_in_exam(:include => "question")
をしかし、これはいないようだ。
e = Examination.find(1)
questions = e.questions
そして、質問配列の要素は、私は私が書くことができますね "question_index" 属性
を持っていません。私が必要とするデータの大部分はQuestionモデルの ですが、返される配列はQuestionInExamインスタンスで構成されているため、とてもエレガントです。
アイデア?質問モデルから
おかげ
'include'はすべての' QuestionInExam'に対して 'Question'モデルを取得しますので、' qe.question'を呼び出してquesを取得します属性の属性。唯一の違いは、データの遅延または貪欲な負荷です。あなたが含まれている場合は、DBに2つのクエリを最大に持っています。 –