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

ran*_*its 37 ruby ruby-on-rails

目前有一种方法在Rails 4.0.0.beta1中使用ActiveRecord进行原始SQL选择查询吗?我看到ActiveRecord :: Base.execute不再存在.这是怎样的正确方法?

ant*_*ant 53

在这里尝试这个,选择例子..:

query = "select ...."
results = ActiveRecord::Base.connection.execute(query)
Run Code Online (Sandbox Code Playgroud)


Gui*_*ick 30

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

以下将返回ActiveRecord模型:

MyModel.find_by_sql(query)
Run Code Online (Sandbox Code Playgroud)

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


fea*_*ool 10

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

query = "SELECT ..."
results = MyModel.connection.execute(query, :skip_logging)
Run Code Online (Sandbox Code Playgroud)

(注意:如果我正确地阅读了源代码,这可能不适用于PostgreSQL.)

  • 这本身就是一个很好的问题(除非已经得到回答) - 你不同意吗? (6认同)