What's the difference between “includes” and “joins” in ActiveRecord query?

前端 未结 6 1770
名媛妹妹
名媛妹妹 2020-12-15 18:37

What\'s the difference between \"includes\" and \"joins\" in ActiveRecord query? Can anyone explain to me with the following two associated

6条回答
  •  自闭症患者
    2020-12-15 19:05

    TL; DR

    Joins:

    a.joins(:b).to_sql
    => "SELECT \"a\".* FROM \"a\" INNER JOIN \"b\" ON \"b\".\"id\" = \"a\".\"b_id\""
    

    Includes:

    a.includes(:b).to_sql
    => "SELECT \"a\".* FROM \"a\"
    

    Both:

    a.includes(:b).joins(:b).to_sql
    => "SELECT \"a\".\"id\" AS t0_r0, \"a\".\"a_field_1\" AS t0_r1, \"a\".\"a_field_2\" AS t0_r2, \"a\".\"a_field_3\" AS t0_r3, \"b\".\"a_field_1\" AS t1_r1, \"b\".\"a_field_2\" AS t1_r2, \"b\".\"a_field_3\" AS t1_r3 FROM \"a\" INNER JOIN \"b\" ON \"b\".\"id\" = \"a\".\"plan_id\""
    

提交回复
热议问题