Rails, как легко обновить целое число в Table.field с +1 - PullRequest
0 голосов
/ 13 марта 2012

Есть ли хитрость ruby ​​/ rails для простого обновления целого типа поля таблицы с +1?

У меня есть Invite.clicks

Когда пользователь нажимает на контроллер, я хочусделайте Invite.click + 1 в данных.Любые хитрости или мне нужно обновить его вручную?

Спасибо

Ответы [ 2 ]

4 голосов
/ 13 марта 2012

Это модель ActiveRecord?Если да, есть метод increment:

Invite.first.increment!(:click)
3 голосов
/ 13 марта 2012

Вы можете использовать update_counters для обновления значения прямо в базе данных:

Invite.update_counters(invite_id, :clicks => 1)

Это преобразуется в прямой вызов SQL, подобный этому:

update invites
set clicks = coalesce(clicks, 0) + 1
where id = #{invite_id}

Преимущество обновления в базе данных состоит в том, что вам не нужно беспокоиться о двух обновлениях одновременно, которые сражаются друг с другом.Вам также не нужно извлекать весь объект из базы данных и проходить все обычные вещи ActiveRecord, если вы просто увеличиваете счетчик.

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