mirror of
https://github.com/openSUSE/osem.git
synced 2026-08-13 19:54:02 +00:00
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.
|
||||
#acts_as_votable
|
||||
|
||||
belongs_to :commentable, polymorphic: true
|
||||
belongs_to :commentable, counter_cache: true, polymorphic: true
|
||||
|
||||
# NOTE: Comments belong to a user
|
||||
belongs_to :user
|
||||
|
|
|
|||
|
|
@ -184,4 +184,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'
|
||||
|
|
|
|||
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.integer "program_id"
|
||||
t.integer "max_attendees"
|
||||
t.integer "comments_count", default: 0, null: false
|
||||
end
|
||||
|
||||
create_table "events_registrations", force: :cascade do |t|
|
||||
|
|
|
|||
|
|
@ -98,6 +98,29 @@ describe Event do
|
|||
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
|
||||
context 'confirmed' do
|
||||
it 'returns only confirmed events' do
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue