Rails has_many通过Association

时间:2015-02-11 15:34:29

标签: ruby-on-rails

我有一个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已经回答的所有问题,并随之回复答案。”

1 个答案:

答案 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)

您可以(并且应该)始终将部分代码作为范围移动到模型中。