From 96dc85d1a5372a3026f2da3bfd7a51819bf2e774 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juanjo=20Baz=C3=A1n?= Date: Tue, 25 Aug 2015 15:58:23 +0200 Subject: [PATCH 1/5] adds cache columns to acs_as_votable models --- ...21_adds_votable_cache_field_to_comments.rb | 19 +++++++++++ ...827_adds_votable_cache_field_to_debates.rb | 19 +++++++++++ db/schema.rb | 32 +++++++++++++++++-- 3 files changed, 68 insertions(+), 2 deletions(-) create mode 100644 db/migrate/20150825124821_adds_votable_cache_field_to_comments.rb create mode 100644 db/migrate/20150825124827_adds_votable_cache_field_to_debates.rb 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..69f4cad30 --- /dev/null +++ b/db/migrate/20150825124821_adds_votable_cache_field_to_comments.rb @@ -0,0 +1,19 @@ +class AddsVotableCacheFieldToComments < ActiveRecord::Migration + def change + add_column :comments, :cached_votes_total, :integer, default: 0 + add_column :comments, :cached_votes_score, :integer, default: 0 + add_column :comments, :cached_votes_up, :integer, default: 0 + add_column :comments, :cached_votes_down, :integer, default: 0 + add_column :comments, :cached_weighted_score, :integer, default: 0 + add_column :comments, :cached_weighted_total, :integer, default: 0 + add_column :comments, :cached_weighted_average, :float, default: 0 + + add_index :comments, :cached_votes_total + add_index :comments, :cached_votes_score + add_index :comments, :cached_votes_up + add_index :comments, :cached_votes_down + add_index :comments, :cached_weighted_score + add_index :comments, :cached_weighted_total + add_index :comments, :cached_weighted_average + 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..d34993654 --- /dev/null +++ b/db/migrate/20150825124827_adds_votable_cache_field_to_debates.rb @@ -0,0 +1,19 @@ +class AddsVotableCacheFieldToDebates < ActiveRecord::Migration + def change + add_column :debates, :cached_votes_total, :integer, default: 0 + add_column :debates, :cached_votes_score, :integer, default: 0 + add_column :debates, :cached_votes_up, :integer, default: 0 + add_column :debates, :cached_votes_down, :integer, default: 0 + add_column :debates, :cached_weighted_score, :integer, default: 0 + add_column :debates, :cached_weighted_total, :integer, default: 0 + add_column :debates, :cached_weighted_average, :float, default: 0 + + add_index :debates, :cached_votes_total + add_index :debates, :cached_votes_score + add_index :debates, :cached_votes_up + add_index :debates, :cached_votes_down + add_index :debates, :cached_weighted_score + add_index :debates, :cached_weighted_total + add_index :debates, :cached_weighted_average + end +end \ No newline at end of file diff --git a/db/schema.rb b/db/schema.rb index d21459719..b3911bb57 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: 20150824144524) do +ActiveRecord::Schema.define(version: 20150825124827) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -41,7 +41,7 @@ ActiveRecord::Schema.define(version: 20150824144524) do t.string "title" t.text "body" t.string "subject" - t.integer "user_id", null: false + t.integer "user_id", null: false t.integer "parent_id" t.integer "lft" t.integer "rgt" @@ -54,8 +54,22 @@ ActiveRecord::Schema.define(version: 20150824144524) do t.datetime "reviewed_at" t.integer "moderator_id" t.integer "administrator_id" + t.integer "cached_votes_total", default: 0 + t.integer "cached_votes_score", default: 0 + t.integer "cached_votes_up", default: 0 + t.integer "cached_votes_down", default: 0 + t.integer "cached_weighted_score", default: 0 + t.integer "cached_weighted_total", default: 0 + t.float "cached_weighted_average", default: 0.0 end + add_index "comments", ["cached_votes_down"], name: "index_comments_on_cached_votes_down", using: :btree + add_index "comments", ["cached_votes_score"], name: "index_comments_on_cached_votes_score", 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", ["cached_weighted_average"], name: "index_comments_on_cached_weighted_average", using: :btree + add_index "comments", ["cached_weighted_score"], name: "index_comments_on_cached_weighted_score", using: :btree + add_index "comments", ["cached_weighted_total"], name: "index_comments_on_cached_weighted_total", 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 @@ -71,8 +85,22 @@ ActiveRecord::Schema.define(version: 20150824144524) do t.datetime "flagged_as_inappropiate_at" t.integer "inappropiate_flags_count", default: 0 t.datetime "reviewed_at" + t.integer "cached_votes_total", default: 0 + t.integer "cached_votes_score", default: 0 + t.integer "cached_votes_up", default: 0 + t.integer "cached_votes_down", default: 0 + t.integer "cached_weighted_score", default: 0 + t.integer "cached_weighted_total", default: 0 + t.float "cached_weighted_average", default: 0.0 end + add_index "debates", ["cached_votes_down"], name: "index_debates_on_cached_votes_down", using: :btree + add_index "debates", ["cached_votes_score"], name: "index_debates_on_cached_votes_score", 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", ["cached_weighted_average"], name: "index_debates_on_cached_weighted_average", using: :btree + add_index "debates", ["cached_weighted_score"], name: "index_debates_on_cached_weighted_score", using: :btree + add_index "debates", ["cached_weighted_total"], name: "index_debates_on_cached_weighted_total", using: :btree add_index "debates", ["hidden_at"], name: "index_debates_on_hidden_at", using: :btree create_table "identities", force: :cascade do |t| From cfe583fbe6619857ae6bbe980305c8ae19a31f00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juanjo=20Baz=C3=A1n?= Date: Tue, 25 Aug 2015 15:58:49 +0200 Subject: [PATCH 2/5] adds cache to votes on Comments --- app/models/comment.rb | 10 +++++++++- app/views/comments/_votes.html.erb | 5 ++--- config/locales/en.yml | 1 - config/locales/es.yml | 1 - spec/factories.rb | 3 +++ 5 files changed, 14 insertions(+), 6 deletions(-) diff --git a/app/models/comment.rb b/app/models/comment.rb index 824f1dbf0..a9dc68505 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/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 279b2a00e..e3ebf62d6 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 98c463b1e..4097c22b9 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/spec/factories.rb b/spec/factories.rb index 4fa2a70e3..0a4922411 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 From 6ead1a2c1d1e82654b3a223e602650824d842b23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juanjo=20Baz=C3=A1n?= Date: Tue, 25 Aug 2015 16:22:47 +0200 Subject: [PATCH 3/5] adds cache to votes on Debates --- app/models/debate.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/models/debate.rb b/app/models/debate.rb index c16048f70..2f93dfa2b 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? From c9ca3877e83409249b4f2cb27af7181de75921f7 Mon Sep 17 00:00:00 2001 From: kikito Date: Wed, 26 Aug 2015 14:46:51 +0200 Subject: [PATCH 4/5] adds only the needed cahced fields to comments and debates; --- ...821_adds_votable_cache_field_to_comments.rb | 8 -------- ...4827_adds_votable_cache_field_to_debates.rb | 10 +--------- db/schema.rb | 18 +----------------- 3 files changed, 2 insertions(+), 34 deletions(-) diff --git a/db/migrate/20150825124821_adds_votable_cache_field_to_comments.rb b/db/migrate/20150825124821_adds_votable_cache_field_to_comments.rb index 69f4cad30..e2da7e12f 100644 --- a/db/migrate/20150825124821_adds_votable_cache_field_to_comments.rb +++ b/db/migrate/20150825124821_adds_votable_cache_field_to_comments.rb @@ -1,19 +1,11 @@ class AddsVotableCacheFieldToComments < ActiveRecord::Migration def change add_column :comments, :cached_votes_total, :integer, default: 0 - add_column :comments, :cached_votes_score, :integer, default: 0 add_column :comments, :cached_votes_up, :integer, default: 0 add_column :comments, :cached_votes_down, :integer, default: 0 - add_column :comments, :cached_weighted_score, :integer, default: 0 - add_column :comments, :cached_weighted_total, :integer, default: 0 - add_column :comments, :cached_weighted_average, :float, default: 0 add_index :comments, :cached_votes_total - add_index :comments, :cached_votes_score add_index :comments, :cached_votes_up add_index :comments, :cached_votes_down - add_index :comments, :cached_weighted_score - add_index :comments, :cached_weighted_total - add_index :comments, :cached_weighted_average 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 index d34993654..07df8cf22 100644 --- a/db/migrate/20150825124827_adds_votable_cache_field_to_debates.rb +++ b/db/migrate/20150825124827_adds_votable_cache_field_to_debates.rb @@ -1,19 +1,11 @@ class AddsVotableCacheFieldToDebates < ActiveRecord::Migration def change add_column :debates, :cached_votes_total, :integer, default: 0 - add_column :debates, :cached_votes_score, :integer, default: 0 add_column :debates, :cached_votes_up, :integer, default: 0 add_column :debates, :cached_votes_down, :integer, default: 0 - add_column :debates, :cached_weighted_score, :integer, default: 0 - add_column :debates, :cached_weighted_total, :integer, default: 0 - add_column :debates, :cached_weighted_average, :float, default: 0 add_index :debates, :cached_votes_total - add_index :debates, :cached_votes_score add_index :debates, :cached_votes_up add_index :debates, :cached_votes_down - add_index :debates, :cached_weighted_score - add_index :debates, :cached_weighted_total - add_index :debates, :cached_weighted_average end -end \ No newline at end of file +end diff --git a/db/schema.rb b/db/schema.rb index b3911bb57..2fce6ed26 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -41,7 +41,7 @@ ActiveRecord::Schema.define(version: 20150825124827) do t.string "title" t.text "body" t.string "subject" - t.integer "user_id", null: false + t.integer "user_id", null: false t.integer "parent_id" t.integer "lft" t.integer "rgt" @@ -55,21 +55,13 @@ ActiveRecord::Schema.define(version: 20150825124827) do t.integer "moderator_id" t.integer "administrator_id" t.integer "cached_votes_total", default: 0 - t.integer "cached_votes_score", default: 0 t.integer "cached_votes_up", default: 0 t.integer "cached_votes_down", default: 0 - t.integer "cached_weighted_score", default: 0 - t.integer "cached_weighted_total", default: 0 - t.float "cached_weighted_average", default: 0.0 end add_index "comments", ["cached_votes_down"], name: "index_comments_on_cached_votes_down", using: :btree - add_index "comments", ["cached_votes_score"], name: "index_comments_on_cached_votes_score", 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", ["cached_weighted_average"], name: "index_comments_on_cached_weighted_average", using: :btree - add_index "comments", ["cached_weighted_score"], name: "index_comments_on_cached_weighted_score", using: :btree - add_index "comments", ["cached_weighted_total"], name: "index_comments_on_cached_weighted_total", 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 @@ -86,21 +78,13 @@ ActiveRecord::Schema.define(version: 20150825124827) do t.integer "inappropiate_flags_count", default: 0 t.datetime "reviewed_at" t.integer "cached_votes_total", default: 0 - t.integer "cached_votes_score", default: 0 t.integer "cached_votes_up", default: 0 t.integer "cached_votes_down", default: 0 - t.integer "cached_weighted_score", default: 0 - t.integer "cached_weighted_total", default: 0 - t.float "cached_weighted_average", default: 0.0 end add_index "debates", ["cached_votes_down"], name: "index_debates_on_cached_votes_down", using: :btree - add_index "debates", ["cached_votes_score"], name: "index_debates_on_cached_votes_score", 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", ["cached_weighted_average"], name: "index_debates_on_cached_weighted_average", using: :btree - add_index "debates", ["cached_weighted_score"], name: "index_debates_on_cached_weighted_score", using: :btree - add_index "debates", ["cached_weighted_total"], name: "index_debates_on_cached_weighted_total", using: :btree add_index "debates", ["hidden_at"], name: "index_debates_on_hidden_at", using: :btree create_table "identities", force: :cascade do |t| From 4e86586e7d98689cd6e0bed64dc3bc1b2b04a95c Mon Sep 17 00:00:00 2001 From: kikito Date: Wed, 26 Aug 2015 14:51:54 +0200 Subject: [PATCH 5/5] fixes error in db/schema.rb --- db/schema.rb | 4 ---- 1 file changed, 4 deletions(-) diff --git a/db/schema.rb b/db/schema.rb index 8bb51ae70..783e3dbea 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -76,14 +76,10 @@ ActiveRecord::Schema.define(version: 20150826112411) do t.datetime "hidden_at" t.datetime "flagged_as_inappropiate_at" t.integer "inappropiate_flags_count", default: 0 -<<<<<<< HEAD - t.datetime "reviewed_at" 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" ->>>>>>> master end add_index "debates", ["cached_votes_down"], name: "index_debates_on_cached_votes_down", using: :btree