Ruby on rails 多个左连接到rails 4

Ruby on rails 多个左连接到rails 4,ruby-on-rails,activerecord,left-join,inner-join,Ruby On Rails,Activerecord,Left Join,Inner Join,我正在尝试使用ActiveRecord请求一些数据,但没有成功 我有这些模型: 部分有多个问题 问题只有一个答案 一个答案属于一个用户和一个问题 所以我想请求一个指定的用户,所有部分都有链接的问题和链接的答案 也许像 Section.all.joins(:questions).joins(:answer).where(answer.user_id = USER_ID) 谢谢你的帮助 您可以执行以下操作: Section.joins(questions: :answer).where(answe

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

我有这些模型:

部分有多个问题

问题只有一个答案

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

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

也许像

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

谢谢你的帮助

您可以执行以下操作:

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

需要知道的一些事情:

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

# 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' })
              #^^           ^

类似问题:


太完美了。谢谢!如果你还有几分钟的时间。你能解释一下吗:问题::回答为什么第一个冒号是结尾,第二个是开头?这是新的ruby哈希语法。使用
{:questions=>:answer}
{questions::answer}
完全相同(在两个示例中,键是符号,值是符号)。(新语法已集成到Ruby 1.9.x和更新版本中。它似乎只返回第一部分。是否可以使用左连接作为应答连接?因为,如果没有应答,请求将不返回任何内容