如何获取与嵌套模型关联的所有数据?

时间:2016-06-28 07:32:07

标签: ruby-on-rails

我有3个模型:Quizhas_many questionshas_many answers。较低的模型将belongs_to模型直观地置于其上方(测验>问题>答案)。

我的问题是我希望得到所有答案的集合。我以为我可以使用quiz.questions.answersquiz.questions.all.answers之类的内容执行此操作,但我只是收到错误undefined method 'answers'。为什么会发生这种情况?如何解决?

3 个答案:

答案 0 :(得分:2)

Answer属于一个Question,因此您无法在answers的集合上调用questions,因此如果您想要所有测验问题的所有答案,那么你可以做这样的事情来实现,在Quiz模型中添加这个

has_many :answers, through: :questions

通过添加,您可以通过执行quiz.answers直接获取所有答案。

现在,如果您想获得具体问题的答案,那么您可以做类似的事情

quiz = Quiz.where(id: quiz_id).include(:questions => :answers)
quiz.questions.each do |question|
  answers = question.answers
  # perform some action
end

希望有所帮助!

答案 1 :(得分:0)

这是需要"通过"关联。

class Quiz
  has_many :questions
  has_many :answers, :through => :questions

然后:

my_quiz.answers

答案 2 :(得分:0)

class Quiz < ActiveRecord::Base
  has_many :questions
  has_many :answers, through: :questions
end

class Question < ActiveRecord::Base
  belongs_to :quiz
  has_many :answers
end

class Answer < ActiveRecord::Base
  belongs_to :question
end

Then you can have,
quiz = Quiz.last

quiz.questions
quiz.answers