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

Ajax

开发平台:

Others

  1. class Bare23Content < ActiveRecord::Base
  2.   include BareMigration
  3.   set_inheritance_column :bogustype     # see migration #20 for why
  4. end
  5. class Bare23Page < ActiveRecord::Base
  6.   include BareMigration
  7. end
  8. class SuperclassPages < ActiveRecord::Migration
  9.   def self.up
  10.     STDERR.puts "Merging Pages into Content table"
  11.     modify_tables_and_update(:add_column, Bare23Content, :name, :string) do
  12.       Bare23Content.transaction do
  13.         if not $schema_generator
  14.           Bare23Page.find(:all).each do |p|
  15.             Bare23Content.create(:type           => 'Page',
  16.                                  :name           => p.name,
  17.                                  :user_id        => p.user_id,
  18.                                  :body           => p.body,
  19.                                  :body_html      => p.body_html,
  20.                                  :created_at     => p.created_at,
  21.                                  :updated_at     => (p.modified_at rescue p.updated_at),
  22.                                  :title          => p.title,
  23.                                  :text_filter_id => p.text_filter_id)
  24.           end
  25.         end
  26.       end
  27.     end
  28.     drop_table :pages
  29.   end
  30.   def self.init_pages(t)
  31.     t.column :name, :string
  32.     t.column :user_id, :integer
  33.     t.column :body, :text
  34.     t.column :body_html, :text
  35.     t.column :created_at, :datetime
  36.     t.column :updated_at, :datetime
  37.     t.column :title, :string
  38.     t.column :text_filter_id, :integer
  39.     t.column :whiteboard, :text
  40.   end
  41.   def self.down
  42.     STDERR.puts "Recreating pages table"
  43.     modify_tables_and_update(:create_table, :pages, lambda {|t| init_pages(t)}) do
  44.       Bare23Content.transaction do
  45.         Bare23Content.find(:all, :conditions => "type = 'Page'").each do |p|
  46.           Bare23Page.create(:name           => p.name,
  47.                             :user_id        => p.user_id,
  48.                             :body           => p.body,
  49.                             :body_html      => p.body_html,
  50.                             :created_at     => p.created_at,
  51.                             :updated_at     => p.updated_at,
  52.                             :title          => p.title,
  53.                             :text_filter_id => p.text_filter_id,
  54.                             :whiteboard     => p.whiteboard)
  55.         end
  56.         Bare23Content.delete_all "type = 'Page'"
  57.       end
  58.     end
  59.     remove_column :contents, :name
  60.   end
  61. end