diff --git a/app/models/comment.rb b/app/models/comment.rb index 2f69138d7..dca894b7c 100644 --- a/app/models/comment.rb +++ b/app/models/comment.rb @@ -49,7 +49,15 @@ class Comment < ActiveRecord::Base end def total_votes - votes_for.size + cached_votes_total + end + + def total_likes + cached_votes_up + end + + def total_dislikes + cached_votes_down end def not_visible? diff --git a/app/models/debate.rb b/app/models/debate.rb index c20245e85..7b43bc71c 100644 --- a/app/models/debate.rb +++ b/app/models/debate.rb @@ -40,15 +40,15 @@ class Debate < ActiveRecord::Base end def likes - get_likes.size + cached_votes_up end def dislikes - get_dislikes.size + cached_votes_down end def total_votes - votes_for.size + cached_votes_total end def editable? diff --git a/app/views/comments/_votes.html.erb b/app/views/comments/_votes.html.erb index 73efa56ba..d7af65bff 100644 --- a/app/views/comments/_votes.html.erb +++ b/app/views/comments/_votes.html.erb @@ -1,5 +1,4 @@ - <%= t('debates.comment.votes', count: comment.total_votes) %>  |  @@ -8,7 +7,7 @@ method: "post", remote: true do %> <% end %> - <%= comment.get_likes.size %> + <%= comment.total_likes %> @@ -16,5 +15,5 @@ method: "post", remote: true do %> <% end %> - <%= comment.get_dislikes.size %> + <%= comment.total_dislikes %> diff --git a/config/locales/en.yml b/config/locales/en.yml index 857abb1b8..322cf585f 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -61,7 +61,6 @@ en: zero: No votes one: 1 vote other: "%{count} votes" - votes_weighted_score: "Total: %{score}" form: debate_title: Debate title title_instructions: "SBe clear and precise with the title, but make it informative" diff --git a/config/locales/es.yml b/config/locales/es.yml index 2ac4f0d9f..5c21c039e 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -61,7 +61,6 @@ es: zero: Sin votos one: 1 voto other: "%{count} votos" - votes_weighted_score: "Total: %{score}" form: debate_title: Título del debate title_instructions: "Sé claro y conciso a la hora de poner un título, pero recuerda que debe explicar bien tu idea, ¡es tu carta de entrada!" diff --git a/db/migrate/20150825124821_adds_votable_cache_field_to_comments.rb b/db/migrate/20150825124821_adds_votable_cache_field_to_comments.rb new file mode 100644 index 000000000..e2da7e12f --- /dev/null +++ b/db/migrate/20150825124821_adds_votable_cache_field_to_comments.rb @@ -0,0 +1,11 @@ +class AddsVotableCacheFieldToComments < ActiveRecord::Migration + def change + add_column :comments, :cached_votes_total, :integer, default: 0 + add_column :comments, :cached_votes_up, :integer, default: 0 + add_column :comments, :cached_votes_down, :integer, default: 0 + + add_index :comments, :cached_votes_total + add_index :comments, :cached_votes_up + add_index :comments, :cached_votes_down + end +end diff --git a/db/migrate/20150825124827_adds_votable_cache_field_to_debates.rb b/db/migrate/20150825124827_adds_votable_cache_field_to_debates.rb new file mode 100644 index 000000000..07df8cf22 --- /dev/null +++ b/db/migrate/20150825124827_adds_votable_cache_field_to_debates.rb @@ -0,0 +1,11 @@ +class AddsVotableCacheFieldToDebates < ActiveRecord::Migration + def change + add_column :debates, :cached_votes_total, :integer, default: 0 + add_column :debates, :cached_votes_up, :integer, default: 0 + add_column :debates, :cached_votes_down, :integer, default: 0 + + add_index :debates, :cached_votes_total + add_index :debates, :cached_votes_up + add_index :debates, :cached_votes_down + end +end diff --git a/db/schema.rb b/db/schema.rb index 7633cda01..783e3dbea 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -54,8 +54,14 @@ ActiveRecord::Schema.define(version: 20150826112411) do t.datetime "archived_at" t.integer "moderator_id" t.integer "administrator_id" + t.integer "cached_votes_total", default: 0 + t.integer "cached_votes_up", default: 0 + t.integer "cached_votes_down", default: 0 end + add_index "comments", ["cached_votes_down"], name: "index_comments_on_cached_votes_down", using: :btree + add_index "comments", ["cached_votes_total"], name: "index_comments_on_cached_votes_total", using: :btree + add_index "comments", ["cached_votes_up"], name: "index_comments_on_cached_votes_up", using: :btree add_index "comments", ["commentable_id", "commentable_type"], name: "index_comments_on_commentable_id_and_commentable_type", using: :btree add_index "comments", ["hidden_at"], name: "index_comments_on_hidden_at", using: :btree add_index "comments", ["user_id"], name: "index_comments_on_user_id", using: :btree @@ -70,9 +76,15 @@ ActiveRecord::Schema.define(version: 20150826112411) do t.datetime "hidden_at" t.datetime "flagged_as_inappropiate_at" t.integer "inappropiate_flags_count", default: 0 + t.integer "cached_votes_total", default: 0 + t.integer "cached_votes_up", default: 0 + t.integer "cached_votes_down", default: 0 t.datetime "archived_at" end + add_index "debates", ["cached_votes_down"], name: "index_debates_on_cached_votes_down", using: :btree + add_index "debates", ["cached_votes_total"], name: "index_debates_on_cached_votes_total", using: :btree + add_index "debates", ["cached_votes_up"], name: "index_debates_on_cached_votes_up", using: :btree add_index "debates", ["hidden_at"], name: "index_debates_on_hidden_at", using: :btree create_table "identities", force: :cascade do |t| diff --git a/spec/factories.rb b/spec/factories.rb index 43a1bce85..ded2e20a0 100644 --- a/spec/factories.rb +++ b/spec/factories.rb @@ -37,6 +37,9 @@ FactoryGirl.define do association :votable, factory: :debate association :voter, factory: :user vote_flag true + after(:create) do |vote, _| + vote.votable.update_cached_votes + end end factory :comment do