caching comment counts
This commit is contained in:
parent
89840d0bab
commit
9c6286182e
5 changed files with 36 additions and 2 deletions
|
|
@ -8,7 +8,7 @@ class Comment < ActiveRecord::Base
|
||||||
# want user to vote on the quality of comments.
|
# want user to vote on the quality of comments.
|
||||||
#acts_as_votable
|
#acts_as_votable
|
||||||
|
|
||||||
belongs_to :commentable, polymorphic: true
|
belongs_to :commentable, counter_cache: true, polymorphic: true
|
||||||
|
|
||||||
# NOTE: Comments belong to a user
|
# NOTE: Comments belong to a user
|
||||||
belongs_to :user
|
belongs_to :user
|
||||||
|
|
|
||||||
|
|
@ -184,4 +184,4 @@
|
||||||
%ul.dropdown-menu{ role: 'menu' }
|
%ul.dropdown-menu{ role: 'menu' }
|
||||||
= render 'change_state_dropdown', event: event
|
= render 'change_state_dropdown', event: event
|
||||||
%td.text-center
|
%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'
|
||||||
|
|
|
||||||
10
db/migrate/20161229080315_add_comments_count_to_events.rb
Normal file
10
db/migrate/20161229080315_add_comments_count_to_events.rb
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
class AddCommentsCountToEvents < ActiveRecord::Migration
|
||||||
|
def change
|
||||||
|
add_column :events, :comments_count, :integer, default: 0, null: false
|
||||||
|
|
||||||
|
Event.find_each do |event|
|
||||||
|
comments_count = event.comment_threads.count
|
||||||
|
event.update_attribute(:comments_count, comments_count) unless comments_count.zero?
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
@ -242,6 +242,7 @@ ActiveRecord::Schema.define(version: 20170629232817) do
|
||||||
t.boolean "is_highlight", default: false
|
t.boolean "is_highlight", default: false
|
||||||
t.integer "program_id"
|
t.integer "program_id"
|
||||||
t.integer "max_attendees"
|
t.integer "max_attendees"
|
||||||
|
t.integer "comments_count", default: 0, null: false
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "events_registrations", force: :cascade do |t|
|
create_table "events_registrations", force: :cascade do |t|
|
||||||
|
|
|
||||||
|
|
@ -98,6 +98,29 @@ describe Event do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe '#comments_count' do
|
||||||
|
context 'has a valid counter cache' do
|
||||||
|
before do
|
||||||
|
create(:comment, commentable: event)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'successfully increments comments_count' do
|
||||||
|
expected = expect do
|
||||||
|
create(:comment, commentable: event)
|
||||||
|
end
|
||||||
|
expected.to change { event.comments_count }.by(1)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'successfully decrements comments_count' do
|
||||||
|
expected = expect do
|
||||||
|
event.comment_threads.last.destroy
|
||||||
|
event.reload
|
||||||
|
end
|
||||||
|
expected.to change { event.comments_count }.by(-1)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe 'scope ' do
|
describe 'scope ' do
|
||||||
context 'confirmed' do
|
context 'confirmed' do
|
||||||
it 'returns only confirmed events' do
|
it 'returns only confirmed events' do
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue