Ответ 1
a = Address.find_by_cid(15)
a.user_name = 'Samuel'
a.save
В 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')
но это не сработает.
a = Address.find_by_cid(15)
a.user_name = 'Samuel'
a.save
Используйте метод класса update_all
:
Address.where(:cid => 15).update_all(user_name : 'Samuel')
Чтобы уточнить ответ @typeoneerror, просто используйте update_all
в объекте ActiveRecord:: Relation, а не в объекте записи:
ModelName.where(:unique_id => x).update_all(:name => "x")
http://api.rubyonrails.org/classes/ActiveRecord/Base.html#M002273