Итак, у меня есть кнопка вверх и вниз, которая вставляет голосование со значением 1 или -1 в базу данных. Это работает правильно. Затем я отображаю общее количество голосов для этого элемента, суммируя значения его голосов. Тем не менее, это работает неправильно, потому что отображение суммы голосов ведет себя очень странно:
Первый голос по видео, похоже, не увеличивает его вообще. Тогда второе голосование делает. Если я иду от повышения к понижению, оно увеличивается один раз, а затем следующее снижение снижается. Это сложно объяснить, но, возможно, вы сможете понять, что не так с моим кодом.
У меня есть эта функция в моей модели видео (элемент, за который проголосовали, это has_many video_votes):
def vote_sum
read_attribute(:vote_sum) || video_votes.sum(:value)
end
У меня также есть это в моей модели VideoVote:
after_create :update_vote_sum
private
def update_vote_sum
video.update_attributes(:vote_sum => video.vote_sum + value)
end
Что я делаю не так?