【问题标题】:Multiple Left join with rails 4带导轨的多个左连接 4
【发布时间】:2015-04-23 23:32:33
【问题描述】:

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

我有这些模型:

部分有多个问题

问题只有一个答案

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

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

可能是这样的

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

感谢您的帮助!

【问题讨论】:

    标签: ruby-on-rails activerecord left-join inner-join


    【解决方案1】:

    您可以执行以下操作:

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

    需要知道的一些事情:

    • joins/includes 方法中,始终使用与关系完全相同的名称
    • 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 } 完全相同(在这两个例子中,key 是一个符号,value 是一个符号)。 (新语法已集成到 Ruby 1.9.x 及更新版本中
    • 它似乎只返回第一个部分。是否可以为答案加入用户左加入?
    • 因为,如果没有答案。该请求不会返回任何内容
    猜你喜欢
    • 1970-01-01
    • 2015-08-16
    • 2011-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-20
    相关资源
    最近更新 更多