From 33df0ee8e45a70bf4a4bd79b800a7eb679ba9885 Mon Sep 17 00:00:00 2001 From: Emanuel Hayford Date: Thu, 16 Mar 2017 06:41:15 +0100 Subject: [PATCH] Fixes #1230. Makes comment counter more efficient --- 0 | 2 ++ app/models/comment.rb | 2 +- app/views/admin/events/index.html.haml | 2 +- .../20170316042351_add_comment_count_to_events.rb | 15 +++++++++++++++ db/schema.rb | 3 ++- 5 files changed, 21 insertions(+), 3 deletions(-) create mode 100644 0 create mode 100644 db/migrate/20170316042351_add_comment_count_to_events.rb diff --git a/0 b/0 new file mode 100644 index 00000000..b8bb5159 --- /dev/null +++ b/0 @@ -0,0 +1,2 @@ + invoke active_record + create db/migrate/20170316042351_add_comment_count_to_events.rb diff --git a/app/models/comment.rb b/app/models/comment.rb index 31531f8e..8c915974 100644 --- a/app/models/comment.rb +++ b/app/models/comment.rb @@ -8,7 +8,7 @@ class Comment < ActiveRecord::Base # want user to vote on the quality of comments. #acts_as_votable - belongs_to :commentable, polymorphic: true + belongs_to :commentable, polymorphic: true, counter_cache: true # NOTE: Comments belong to a user belongs_to :user diff --git a/app/views/admin/events/index.html.haml b/app/views/admin/events/index.html.haml index 16110268..bd02e73e 100644 --- a/app/views/admin/events/index.html.haml +++ b/app/views/admin/events/index.html.haml @@ -183,4 +183,4 @@ %ul.dropdown-menu{role: 'menu'} = render 'change_state_dropdown', event: event %td.text-center - = link_to "#{event.comment_threads.count}", admin_conference_program_event_path(@conference.short_title, event), anchor: 'comments-div' + = link_to "#{event.comments_count}", admin_conference_program_event_path(@conference.short_title, event), anchor: 'comments-div' diff --git a/db/migrate/20170316042351_add_comment_count_to_events.rb b/db/migrate/20170316042351_add_comment_count_to_events.rb new file mode 100644 index 00000000..762fa882 --- /dev/null +++ b/db/migrate/20170316042351_add_comment_count_to_events.rb @@ -0,0 +1,15 @@ +class AddCommentCountToEvents < ActiveRecord::Migration + def up + add_column :events, :comments_count, :integer, default: 0 + + Event.reset_column_information + + Event.find_each do |event| + event.update_attribute :comments_count, event.comment_threads.length + end + end + + def down + remove_column :events, :comments_count + end +end diff --git a/db/schema.rb b/db/schema.rb index 34c30a04..458d218a 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20170213145807) do +ActiveRecord::Schema.define(version: 20170316042351) do create_table "ahoy_events", force: :cascade do |t| t.uuid "visit_id", limit: 16 @@ -234,6 +234,7 @@ ActiveRecord::Schema.define(version: 20170213145807) do t.boolean "is_highlight", default: false t.integer "program_id" t.integer "max_attendees" + t.integer "comments_count", default: 0 end create_table "events_registrations", force: :cascade do |t|