У меня есть модель с именем Голосование , которая имеет полиморфную ассоциацию с двумя другими моделями: Микросообщения и Комментарии .
Вот их ассоциация:
micropost.rb:
class Micropost < ActiveRecord::Base
belongs_to :user
has_many :comments, :dependent => :destroy
has_many :votes, :as => :votable, :dependent => :destroy
end
comment.rb:
class Comment < ActiveRecord::Base
belongs_to :micropost, :counter_cache => true
belongs_to :user
has_many :votes, :as => :votable, :dependent => :destroy
end
vote.rb:
class Vote < ActiveRecord::Base
belongs_to :votable, :polymorphic => true
belongs_to :user
end
Модель Голосование имеет столбец с именем polarity
(для голосования +1 и голосования -1).
Я хотел бы добавить total
(сумма polarity
всех голосов поста или комментария) к каждому экземпляру модели Post and Comment.
Как лучше всего это сделать?
* +1034 * Пример: * * одна тысяча тридцать пять
Пост (: id = 2)
Голосовать (: полярность = 1) Голосовать (: полярность = -1) Голосовать (: полярность = 2)
Запись с ID 2 имеет: 2 голосов