一般活动记录加入或包括

时间:2012-02-06 21:11:11

标签: ruby-on-rails activerecord join

我有两个模型/表A和B.我想执行一个Active Record查询,其结果包括来自两个表的列。我试过inner joins,因为他们听起来像两个表中的列。但是,尝试Active Record joins finder方法仅返回第一个表的结果。

哪些Active Record查询包含结果中两个表的列?也许includes finder方法可能有所帮助。

编辑:将两个表视为ForumThreads和Posts。每个论坛帖子都有多个帖子。我希望查询结果中的行包含每个帖子的信息和论坛帖子的信息(例如帖子标题)。

这个问题可能回答了我的问题:Rails Joins and include columns from joins table

1 个答案:

答案 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)