activerecord - 如何获取连接表的所有列

时间:2012-02-27 10:09:59

标签: ruby-on-rails activerecord

阅读后:this

我仍然没有得到它。在控制台中:

puts Category.joins(:posts)

它在类别和帖子上执行加入或左连接。

但是,返回的所有数据只是Category表中的列。如何在Post中获取这些列数据。 ?

我应该制作另一个模型来实现这个目标吗?

阅读后:this find_by_SQL是唯一的方法吗?如果可能,我想要ActiveRecord方式。

感谢。

2 个答案:

答案 0 :(得分:6)

您可以尝试select()方法:

Category.select("categories.*, posts.*").joins(:posts)

答案 1 :(得分:4)

您可以通过进一步查询来获取帖子表中的列,例如 -

Category.joins(:posts).collect{|category| category.posts.map{|post| post.attributes.merge(category.attributes) } }

这将为您提供每个类别合并在一起的邮件和类别属性的巨大列表。

但是,在类别上进行联接的目的是获取一组具有某些遵循某些连接标准的类别。如果我们在同一指南中采用下一个例子,

Post.joins(:category, :comments)

这也为您提供了帖子列表,但该列表仅包含联接约束后面的帖子,即它们都有一个类别和注释。