Как написать этот код, который выполняет только один запрос? - PullRequest
0 голосов
/ 03 мая 2011

Как написать этот код, который выполняет только один запрос вместо двух и также запускает проверки?update_all обходит все проверки, определенные в модели.

model = ModelName.find(params[:id])
success = model.update_attribute(:column_name, nil)

Ответы [ 2 ]

4 голосов
/ 03 мая 2011

Вы не можете. Выполнение проверок включает, по крайней мере, один шаг: загрузка записи базы данных в объект ruby ​​(который занимает один запрос). Обновление базы данных, конечно, требует другого запроса. Так что в любом случае у вас будет два запроса для вашей задачи.

0 голосов
/ 03 мая 2011

Вы можете использовать метод update:

# Updates one record
  User.update(1, :name => 'testtesttest')

http://apidock.com/rails/ActiveRecord/Relation/update

, но это все равно два запроса, как сказал @mosch.

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