38

Is there currently a way to do a raw SQL select query using ActiveRecord in Rails 4.0.0.beta1? I see ActiveRecord::Base.execute no longer exists. What's the correct way of going about this?

4

3 に答える 3

30

10 ペンスを追加するだけで、Model.connection.execute を使用した生のクエリは ActiveRecord モデルを返さず、生のデータ セットを返します。

以下は ActiveRecord モデルを返します。

MyModel.find_by_sql(query)

編集:もちろん、選択を実行していると仮定します。

于 2015-04-27T11:01:58.877 に答える
10

In Rails 4 (perhaps previous versions as well), if you're going with a custom query for speed, you can add a :skip_logging argument to avoid writing to the log:

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

(Note: If I'm reading the sources correctly, this might not hold true in PostgreSQL.)

于 2014-02-12T01:53:36.003 に答える