Есть ли в настоящее время способ выполнить необработанный запрос выбора SQL, используя ActiveRecord в Rails 4.0.0.beta1? Я вижу, что ActiveRecord:: Base.execute больше не существует. Каков правильный способ этого?
Rails 4, необработанный запрос с использованием ActiveRecord
Ответ 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.)