多个左连接 rails 4

Multiple Left join with rails 4

我正在尝试使用 ActiveRecord 请求一些数据但没有成功。

我有这些型号:

部分有多个问题

问题有一个回答

一个答案属于一个用户和一个问题

所以我想请求指定的用户,所有带有链接问题和链接答案的部分。

也许像

Section.all.joins(:questions).joins(:answer).where(answer.user_id = USER_ID)

感谢您的帮助!

您可以执行以下操作:

Section.joins(questions: :answer).where(answers: { user_id: USER_ID })

一些要知道的东西:

  • joins/includes 方法中,始终使用与关系完全相同的名称
  • where子句中,始终使用关系的复数名称(实际上,table的名称,默认情况下是模型名称的复数形式,但也可以手动设置)

示例:

# Consider these relations:
User has_many :posts
Post belongs_to :user

# Usage of joins/includes & where:
User.includes(:posts).where(posts: { name: 'BlogPost #1' })
                  #^            ^
Post.joins(:user).where(users: { name: 'Little Boby Table' })
              #^^           ^

类似问题:

  • How to query a model based on attribute of another model which belongs to the first model?
  • association named not found perhaps misspelled issue in rails association
  • Rails 3, has_one / has_many with lambda condition
  • Rails 4 scope to find parents with no children
  • Join multiple tables with active records