как обновить запись, не беспокоясь о первичном ключе - PullRequest
13 голосов
/ 26 апреля 2010

В ActiveRecord как мы можем обновить запись, не беспокоясь / не зная первичного ключа.

Если я делаю

Address.update(15, :user_name => 'Samuel')

соответствует

UPDATE addresses set user_name = 'Samuel' where id = 15

но что, если я захочу сделать:

UPDATE addresses set user_name = 'Samuel' where cid = 15

что будет эквивалентом ActiveRecord этого ??

Я пытался:

Address.update({:cid => 15}, :user_name => 'Samuel')

но это не работает.

Ответы [ 4 ]

44 голосов
/ 30 ноября 2011

Используйте метод класса update_all:

Address.where(:cid => 15).update_all(user_name : 'Samuel')

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

16 голосов
/ 26 апреля 2010
a = Address.find_by_cid(15)
a.user_name = 'Samuel'
a.save
9 голосов
/ 21 февраля 2014

Чтобы уточнить ответ @ typeoneerror, просто используйте update_all для объекта ActiveRecord :: Relation вместо объекта записи:

ModelName.where(:unique_id => x).update_all(:name => "x")
0 голосов
/ 26 апреля 2010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...