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

Ajax

开发平台:

Others

  1. class Bare38Blog < ActiveRecord::Base
  2.   include BareMigration
  3. end
  4. class Bare38Setting < ActiveRecord::Base
  5.   include BareMigration
  6. end
  7. class AddBlogObject < ActiveRecord::Migration
  8.   def self.up
  9.     begin
  10.       STDERR.puts "Adding a blogs table"
  11.       create_table :blogs do |t|
  12.         t.column :dummy, :string unless $schema_generator
  13.       end
  14.       unless $schema_generator
  15.         Bare38Blog.reset_column_information
  16.         add_column :settings, :blog_id, :integer
  17.         Bare38Setting.reset_column_information
  18.         Bare38Setting.transaction do
  19.           STDERR.puts "Creating default blog"
  20.           default_blog = Bare38Blog.create!
  21.           STDERR.puts "Connecting settings to the default blog"
  22.           STDERR.puts "New Default blog has id: " + default_blog.id.to_s
  23.           STDERR.puts "Migrating #{Bare38Setting.find(:all).size} settings to the new Blog"
  24.           Bare38Setting.find(:all).each do |setting|
  25.             setting.blog_id = default_blog.id
  26.             setting.save!
  27.           end
  28.         end
  29.         remove_column :blogs, :dummy
  30.       end
  31.     rescue Exception => e
  32.       STDERR.puts("Rolling back the changes")
  33.       drop_table(:blogs) rescue nil
  34.       remove_column(:settings, :blog_id) rescue nil
  35.       raise e
  36.     end
  37.   end
  38.   def self.down
  39.     STDERR.puts "Unlinking settings and removing the blogs table"
  40.     Bare38Setting.delete_all(["blog_id != ?", Bare38Blog.find(:first)])
  41.     remove_column :settings, :blog_id
  42.     drop_table :blogs
  43.   end
  44. end