Guest User

Untitled

a guest
Jan 23rd, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.82 KB | None | 0 0
  1. class AddCounterCachesToModels < ActiveRecord::Migration
  2. def self.up
  3. add_column(:decks, :slides_count, :integer)
  4. add_column(:slides, :slide_riffs_count, :integer)
  5. add_column(:slide_riffs, :slide_riff_comments_count, :integer)
  6.  
  7. add_column(:decks, :deck_comments_count, :integer)
  8. add_column(:commenters, :deck_comments_count, :integer)
  9.  
  10.  
  11. add_column(:users, :decks_count, :integer)
  12. add_column(:commenters, :slide_riff_annotations_count, :integer)
  13. add_column(:slide_riffs, :slide_riff_annotations_count, :integer)
  14. add_column(:commenters, :slide_riff_comments_count, :integer)
  15.  
  16. #reset counter caches
  17. self.reset_counter_cache_for(Deck, :slides)
  18. self.reset_counter_cache_for(Slide, :slide_riffs)
  19. self.reset_counter_cache_for(SlideRiff, :slide_riff_comments)
  20. self.reset_counter_cache_for(Deck, :deck_comments)
  21. self.reset_counter_cache_for(Commenter, :deck_comments)
  22. self.reset_counter_cache_for(User, :decks)
  23. self.reset_counter_cache_for(Commenter, :slide_riff_annotations)
  24. self.reset_counter_cache_for(SlideRiff, :slide_riff_annotations)
  25. self.reset_counter_cache_for(Commenter, :slide_riff_comments)
  26.  
  27. end
  28.  
  29. def self.down
  30. remove_column(:decks, :slides_count)
  31. remove_column(:slides, :slide_riffs_count)
  32. remove_column(:slide_riffs, :slide_riff_comments_count)
  33.  
  34. remove_column(:decks, :deck_comments_count)
  35. remove_column(:commenters, :deck_comments_count)
  36.  
  37. remove_column(:users, :decks_count)
  38. remove_column(:commenters, :slide_riff_annotations_count)
  39. remove_column(:slide_riffs, :slide_riff_annotations_count)
  40. remove_column(:commenters, :slide_riff_comments_count)
  41. end
  42.  
  43. private
  44. def self.reset_counter_cache_for(klass, cache_column)
  45. klass.all.each {|record| klass.reset_counters(record.id, cache_column)}
  46. end
  47. end
Add Comment
Please, Sign In to add comment