Rails 4, необработанный запрос с использованием ActiveRecord

Есть ли в настоящее время способ выполнить необработанный запрос выбора SQL, используя ActiveRecord в Rails 4.0.0.beta1? Я вижу, что ActiveRecord:: Base.execute больше не существует. Каков правильный способ этого?

Ответ 1

Здесь попробуйте это, выберите пример..:

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

Ответ 2

Просто чтобы добавить десять пенсов, необработанный запрос с использованием Model.connection.execute не вернет модель ActiveRecord - он вернет исходный набор данных.

Далее будут возвращены модели ActiveRecord:

MyModel.find_by_sql(query)

edit: при условии, конечно, что вы используете select.

Ответ 3

В Rails 4 (возможно, и в предыдущих версиях), если вы собираетесь использовать собственный запрос для скорости, вы можете добавить аргумент :skip_logging, чтобы избежать записи в журнал:

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

(Примечание. Если я правильно читаю источники, это может быть недействительным в PostgreSQL.)