2013-07-18 3 views
3

В рельсах 3, если я пишу: Model.from('models') Arel генерирует следующий SQL:Рельсы 4 AR `от` отличные от рельсов 3?

select "models".* from models 

В рельсах 4 то же Arel генерирует следующий SQL:

select "models".* from 'models', NULL 

Имя таблицы обернуто в кавычках и ' , Добавлен NULL '. Как использовать isl, чтобы дать мне те же результаты, что и в rails 3?

Я использовал оригинальное поведение, чтобы выполнить довольно сложный запрос with recursive против postgres. В rails4 postgres задыхается, когда попадает в одиночную цитату, предшествующую значению, которую я даю from.

Есть ли лучший способ сделать запрос with recursive? Или, есть ли способ запросить с isl, чтобы он работал по-прежнему?

+1

Я не в состоянии дублировать эту ошибку вы видите. Используя приложение с таблицей поставщиков, я вижу ту же инструкцию SQL как для 3.2 и 4 с помощью «Vendor.from (« vendors »). To_sql', что приводит к« # => »SELECT \« vendors ». * FROM vendors" '. Не могли бы вы поделиться более сложным запросом? –

+0

Хмм, я даже не использую сложный запрос на данный момент, просто простой запрос, как тот, который вы пробовали. Тем не менее, я получаю другой 'to_sql'. Может, разница версий? Rails 4.0.0, pg 0.15.1. Любые другие соответствующие драгоценные камни? –

+0

@DanReedy aha! спасибо за проверку работоспособности. Это вызвано жемчужиной. Должна быть несовместимость, поскольку я получаю ожидаемое поведение, когда я удаляю его из своего проекта. Я соглашусь с ними. –

ответ

1

Это, как представляется, несовместимо с squeel gem (главная ветка на сегодняшний день).

EDIT Я отправил pull request в ведущую ветку squeel. Исправляет проблему для меня.

EDIT 2: Merged в мастер

+0

Позор :(Один из моих любимых камней! –

+0

@Damien, если вы столкнулись с этим, я считаю, что исправил его на своей вилке squeel –

+0

Отлично, спасибо. Я посмотрю, есть ли у меня проблемы. –