Почему эта линия Rails 3 AREL не работает после обновления до Rails 3.1? - PullRequest
0 голосов
/ 11 января 2012

Строка, о которой идет речь:

product_properties.includes(:property).where("properties.name = 'Label Description'").first

Он существует в модели «Продукт», которая имеет: SQL генерирует, но выдает ошибку MySQL, потому что пытается выбрать пустой столбец:

SELECT  `product_properties`.`` AS t0_r0, `product_properties`.`id` AS t0_r1, ... 

Как я могу устранить причину, по которой вызывается SELECT пустой строки?

1 Ответ

0 голосов
/ 11 января 2012

Я нашел ответ.Подсказка смотрит на второй столбец в инструкции SELECT выше.Это «id».Обычно это первый столбец.

«Идентификатор» в этой конкретной таблице не был задан как первичный ключ, поэтому у таблицы не было первичного ключа.Очевидно, в версии 3.1 есть изменения AREL, которые заставляют Rails искать первичный ключ и возвращать пустой, когда он не найден.Это вызвало проблему.Я не знаю, это ошибка в Rails или нет.

...