我有两个模型/表A和B.我想执行一个Active Record查询,其结果包括来自两个表的列。我试过inner joins,因为他们听起来像两个表中的列。但是,尝试Active Record joins
finder方法仅返回第一个表的结果。
哪些Active Record查询包含结果中两个表的列?也许includes
finder方法可能有所帮助。
编辑:将两个表视为ForumThreads和Posts。每个论坛帖子都有多个帖子。我希望查询结果中的行包含每个帖子的信息和论坛帖子的信息(例如帖子标题)。
这个问题可能回答了我的问题:Rails Joins and include columns from joins table
答案 0 :(得分:9)
Joins执行内部联接,但在您要求之前不会返回数据。
User.where(:id => 1).joins(:client_applications)
User Load (0.2ms) SELECT "users".* FROM "users" INNER JOIN "client_applications" ON "client_applications"."user_id" = "users"."id" WHERE "users"."id" = 1
Includes将执行两个查询(使用where in)并缓存关联数据(Eager Loading)
User.where(:id => 1).includes(:client_applications)
User Load (0.4ms) SELECT "users".* FROM "users" WHERE "users"."id" = 1
ClientApplication Load (13.6ms) SELECT "client_applications".* FROM "client_applications" WHERE "client_applications"."user_id" IN (1)