Я бы порекомендовал вам не создавать методы, конфликтующие с какими-либо автоматически созданными атрибутами вашей модели, поскольку это будет мешать встроенным функциям Rails, таким как генерация форм.
Вы можетепросто перепишите ваш метод следующим образом:
def update_rank_sum(score)
new_rank = self.rank_sum + score # Or substitute whatever logic is necessary here.
update_attribute :rank_sum, new_rank
end
Это будет обновлять значение в базе данных (при необходимости) каждый раз, когда вызывается метод update_rank_sum
.
Если вы хотите отложитьОбновив значение rank_sum
до более позднего момента, вы можете изменить реализацию следующим образом:
def update_rank_sum(score)
new_rank = self.rank_sum + score # Or substitute whatever logic is necessary here.
self.rank_sum = new_rank
end
Но помните, что вам нужно будет вызвать save
в экземпляре Video
, чтобы сохранить измененияв базу данных.
Обновление одного поля в одной строке может занять вашу базу данных в порядке миллисекунд, поэтому я не буду слишком беспокоиться о производительности, если вы не знаете, что вам понадобится обрабатывать 10 или 100 с.изменений в секунду.