Rails 4,使用ActiveRecord进行原始查询

时间:2013-04-06 20:21:52

标签: ruby-on-rails ruby

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

3 个答案:

答案 0 :(得分:52)

在此尝试此操作,选择示例..:

query = "select ...."
results = ActiveRecord::Base.connection.execute(query)

答案 1 :(得分:29)

只是为了添加我的10便士,使用Model.connection.execute的原始查询将不会返回ActiveRecord模型 - 它将返回原始数据集。

以下内容将返回ActiveRecord模型:

MyModel.find_by_sql(query)

编辑:当然假设你正在运行一个选择。

答案 2 :(得分:10)

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

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

(注意:如果我正确地阅读了这些来源,这在PostgreSQL中可能不适用。)