У меня есть модель с именем Голосование , и вот как выглядит voice.rb :
class Vote < ActiveRecord::Base
belongs_to :votable, :polymorphic => true
belongs_to :user
before_create :update_total
protected
def update_total
self.total ||= 0
self.total += self.polarity
end
end
(это полиморфно, потому что оно также принадлежит другомуМодель называется Комментарий ).
Каждый раз при создании голоса значение итога обновляется.Например, Vote.create(:polarity => 2)
будет выдавать :polarity => 2, :total => 2
Я просто понимаю, что это не имеет смысла, потому что :polarity
всегда будет равно :total
.Что я на самом деле хочу сделать, так это иметь total
для модели, которой принадлежит Голосовать ;в этом случае сообщение и комментарий ( голосование принадлежит сообщению и сообщение имеет много голосов), так что каждый раз при создании голосования,столбец total
в сообщении будет обновлен.Вот так:
13 мая
Post.total = 3 (:id => 2)
Vote.polarity = 1 (:id => 1)
Vote.polarity = -1 (:id => 2)
Vote.polarity = 3 (:id => 3)
14 мая
Post.total = 4 (:id => 2)
Vote.polarity = 1 (:id => 1)
Vote.polarity = -1 (:id => 2)
Vote.polarity = 3 (:id => 3)
Vote.polarity = 1 (:id => 4)