Ruby on Rails 2.3.5: сбой update_all в ActiveRecord - PullRequest
0 голосов
/ 07 мая 2010

Я пытаюсь обновить коллекцию записей в моей базе данных, используя update_all ActiveRecord. Введите скрипт / консоль.

MyModel.update_all("reserved = 1", :order => 'rand()', :limit => 1000)

ActiveRecord считает порядок столбцом, говорит, что он неизвестен, и выдает исключение. Однако, согласно документации, мой синтаксис выглядит вменяемым. Это RoR 2.3.5.

Когда вы делаете MyModel.update_all("reserved = 1") в одиночку, все работает просто отлично.

Также, если я делаю

MyModel.update_all ("reserved = 1", "reserve_type = 2",: order => "rand ()",: limit => 1000) => 0

0 затронутых строк.

Я просто пытаюсь сделать: UPDATE MyModel SET reserved=1, reserve_type=2 ORDER BY RAND() LIMIT 1000

Ответы [ 2 ]

5 голосов
/ 07 мая 2010

Поскольку вторым параметром update_all должны быть условия, вам нужно передать пустой хеш, например:

MyModel.update_all("reserved = 1", {}, {:order => 'rand()', :limit => 1000})

Это должно работать как положено.

0 голосов
/ 22 февраля 2011

Просто уточнение ответа Якуба, правильный формат должен быть:

MyModel.update_all("reserved = 1, reserve_type = 2", {}, {:order => 'rand()', :limit => 1000})

Если вы обновляете несколько столбцов, первый параметр должен содержать список столбцов, разделенных запятыми.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...