From 36c199ae1c9b086c102af46276adbe03ece7d079 Mon Sep 17 00:00:00 2001 From: Victor Costa Date: Wed, 9 Sep 2015 09:22:40 -0300 Subject: [PATCH] Add counter cache for article followers --- app/models/article_follower.rb | 2 +- db/migrate/20150909091347_add_followers_count_to_article.rb | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 db/migrate/20150909091347_add_followers_count_to_article.rb diff --git a/app/models/article_follower.rb b/app/models/article_follower.rb index 632f663..f14687a 100644 --- a/app/models/article_follower.rb +++ b/app/models/article_follower.rb @@ -1,5 +1,5 @@ class ArticleFollower < ActiveRecord::Base attr_accessible :article_id, :person_id, :since - belongs_to :article + belongs_to :article, :counter_cache => :followers_count belongs_to :person end diff --git a/db/migrate/20150909091347_add_followers_count_to_article.rb b/db/migrate/20150909091347_add_followers_count_to_article.rb new file mode 100644 index 0000000..c5f3648 --- /dev/null +++ b/db/migrate/20150909091347_add_followers_count_to_article.rb @@ -0,0 +1,15 @@ +class AddFollowersCountToArticle < ActiveRecord::Migration + + def self.up + add_column :articles, :followers_count, :integer, :default => 0 + add_column :article_versions, :followers_count, :integer + + execute "update articles set followers_count = (select count(*) from article_followers where article_followers.article_id = articles.id)" + end + + def self.down + remove_column :article_versions, :followers_count + remove_column :articles, :followers_count + end + +end -- libgit2 0.21.2