我有三张桌子,
问题集
- has_many:questions
问题
- has_many:answers
答案
现在Answers表中有一个名为" actual_answer"
的列现在我想做一个查找,我可以获得所有Answers,其中actual_answers等于特定值,属于特定的question_set。
我现在有这个:
@questionSet= QuestionSet.find(params[:id])
@answers = Answer.find(:all, :conditions => ["actual_answer=?", SOMEACTUALANSWER])
answers_i_need = []
@answers.each do |answer|
if answer.question.question_set_id == @questionSet.id
answers_i_need << answer
end
end
有没有更好的方法来做到这一点,因为我期待千个阵列结果并且制作循环可能不是完美的方式。
谢谢!
答案 0 :(得分:0)
为什么不使用has_many ... :through
关系?链接到:guides
这样你就可以:
QuestionSet
has_many :questions
has_many :answers, through: :questions
Question
has_many :answers
belongs_to :question_set
Answer
belongs_to :question
然后在你的控制器中你有:
@questionSet= QuestionSet.find(params[:id])
answers_i_need = @questionSet.answers.where('actual_answer = ?', your_actual_value)
哦,如果您要查询的结果超过一千个,您可以考虑查看this。