Как обновить запись, не беспокоясь о первичном ключе

В 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')

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

Ответ 1

a = Address.find_by_cid(15)
a.user_name = 'Samuel'
a.save

Ответ 3

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

ModelName.where(:unique_id => x).update_all(:name => "x")