38

目前有没有办法在 Rails 4.0.0.beta1 中使用 ActiveRecord 进行原始 SQL 选择查询?我看到 ActiveRecord::Base.execute 不再存在。这样做的正确方法是什么?

4

3 回答 3

57

在这里试试这个,选择示例..:

query = "select ...."
results = ActiveRecord::Base.connection.execute(query)
于 2013-04-07T01:22:08.573 回答
30

加上我的十便士,使用 Model.connection.execute 的原始查询不会返回 ActiveRecord 模型 - 它会返回原始数据集。

以下将返回 ActiveRecord 模型:

MyModel.find_by_sql(query)

编辑:当然假设您正在运行选择。

于 2015-04-27T11:01:58.877 回答
10

在 Rails 4(也可能是以前的版本)中,如果您要使用自定义查询来提高速度,您可以添加一个:skip_logging参数来避免写入日志:

query = "SELECT ..."
results = MyModel.connection.execute(query, :skip_logging)

(注意:如果我正确阅读了源代码,这在 PostgreSQL 中可能不成立。)

于 2014-02-12T01:53:36.003 回答