Вот источник для update_attribute
:
def update_attribute(name, value)
send(name.to_s + '=', value)
save(false)
end
Вы можете видеть, что он обновляет запрошенный атрибут и затем вызывает save с perform_validations
, установленным на false
.Поэтому update_attribute
вернет false
, если какой-либо из обратных вызовов сохранения (например, before_save
) помешал записи сохранить, вернув false
.
Если была ошибка более низкого уровня, например, изпамяти в базе данных, тогда я ожидаю, что драйвер базы данных вызовет это как исключение, которое будет передано вашему коду.