033_add_count_caching.rb
上传用户:netsea168
上传日期:2022-07-22
资源大小:4652k
文件大小:1k
源码类别:

Ajax

开发平台:

Others

  1. class Bare33Content < ActiveRecord::Base
  2.   include BareMigration
  3.   def count_children_of_type(type)
  4.     self.class.find(:all,
  5.                     :conditions => ["article_id = ? and type = ?",
  6.                                                self.id,       type ]).size
  7.   end
  8.   def correct_counts
  9.     self.comments_count   = self.count_children_of_type('Comment')
  10.     self.trackbacks_count = self.count_children_of_type('Trackback')
  11.   end
  12. end
  13. class AddCountCaching < ActiveRecord::Migration
  14.   def self.up
  15.     STDERR.puts "Adding comments_count, trackbacks_count"
  16.     modify_tables_and_update([:add_column, Bare33Content, :comments_count, :integer],
  17.                              [:add_column, Bare33Content, :trackbacks_count, :integer]) do |a|
  18.       if not $schema_generator
  19.         a.correct_counts
  20.       end
  21.     end
  22.   end
  23.   def self.down
  24.     STDERR.puts "Removing counts columns"
  25.     remove_column :contents, :comments_count
  26.     remove_column :contents, :trackbacks_count
  27.   end
  28. end