033_add_count_caching.rb
上传用户:netsea168
上传日期:2022-07-22
资源大小:4652k
文件大小:1k
- class Bare33Content < ActiveRecord::Base
- include BareMigration
- def count_children_of_type(type)
- self.class.find(:all,
- :conditions => ["article_id = ? and type = ?",
- self.id, type ]).size
- end
- def correct_counts
- self.comments_count = self.count_children_of_type('Comment')
- self.trackbacks_count = self.count_children_of_type('Trackback')
- end
- end
- class AddCountCaching < ActiveRecord::Migration
- def self.up
- STDERR.puts "Adding comments_count, trackbacks_count"
- modify_tables_and_update([:add_column, Bare33Content, :comments_count, :integer],
- [:add_column, Bare33Content, :trackbacks_count, :integer]) do |a|
- if not $schema_generator
- a.correct_counts
- end
- end
- end
- def self.down
- STDERR.puts "Removing counts columns"
- remove_column :contents, :comments_count
- remove_column :contents, :trackbacks_count
- end
- end