【发布时间】:2012-02-27 10:09:59
【问题描述】:
阅读后:this
我还是不明白。在控制台中:
puts Category.joins(:posts)
它对Category和Post执行join或left join。
但是,返回的所有数据只是类别表中的列。如何在 Post 中获取这些列数据。 ?
我应该制作另一个模型来实现这一点吗?
看完后:this find_by_SQL 是唯一的方法吗?如果可能的话,我想要 ActiveRecord 方式。
谢谢。
【问题讨论】:
-
您应该更具体地说明您要达到的目标。如果你想要它“Active Record 方式”,你甚至不应该谈论“列”,因为你操作的是对象,而不是表。如果你真的需要原始数据,你可以使用
ActiveRecord::Base.connection.select_all( 'SELECT...'),这将返回一个哈希数组(没有模型实例化)。 the documentation is here -
谢谢,我现在用这种方式:ActiveRecord::Base.connection.select_all(Category.joins(:posts).to_sql)),这种方式是不是太讨厌了?
-
没问题。但是,如果您真的想以 ORM 方式工作,您应该只将这些技巧用于非常复杂的 SQL 查询。对于这样一个微不足道的问题,我会改用@abhishek 的解决方案+
includes。如果您不以 OO 方式编写代码,为什么还要使用 ORM?
标签: ruby-on-rails activerecord