我有一个has_many:通过我的应用程序中的三个模型之间的关系:
我使用Active Record Associations docs来建立关系。
User.rb
has_many :answers
has_many :questions, through: :answers
Question.rb
has_many :answers
has_many :users, through: :answers
Answer.rb
belongs_to :question
belongs_to :user
这似乎有效。
User.find(1).questions
User.find(1).answers
上述两种方法都完全符合我的期望。但是,我需要的是将问答作为一对返回。
我怎么说:“好的,得到current_user已经回答的所有问题,并随之回复答案。”
答案 0 :(得分:1)
我会将此添加到控制器:
@questions = Question.joins(:answers).where(answers: { id: current_user.answers.pluck(:id) })
然后在您看来,对于每个问题,您都会得到这样的答案:
- @questions.each do |question|
- answers = question.answers.where(user_id: current_user.id)
您可以(并且应该)始终将部分代码作为范围移动到模型中。