Из тонкой инструкции для update_attributes
:
Обновляет атрибуты модели из переданного хэша и сохраняет запись [...]
Поэтому, когда вы вызываете update_attributes
, он попытается сохранить объект, а это означает, что update_attributes
не подходит ни для одного из используемых вами обратных вызовов; update_attributes
предназначен для использования контроллерами для массового назначения и т. П.
Вы можете заменить вызов update_attributes
простыми назначениями:
def calculate_rating
self.attr1 = 11
self.attr2 = 23
#...
end