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

Ajax

开发平台:

Others

  1. class AddCategorizationModel < ActiveRecord::Migration
  2.   class ArticlesCategory < ActiveRecord::Base
  3.     include BareMigration
  4.   end
  5.   class Categorization < ActiveRecord::Base
  6.     include BareMigration
  7.   end
  8.   def self.up
  9.     create_table :categorizations do |t|
  10.       t.column :article_id, :integer
  11.       t.column :category_id, :integer
  12.       t.column :is_primary, :boolean
  13.     end
  14.     unless $schema_generator
  15.       # You need test if ArticlesCategory object exist because if
  16.       # exception raise even rescue in migration and migration failed and stop
  17.       # :(
  18.       if table_exists? :articles_categories
  19.         ArticlesCategory.all.each do |ac|
  20.           Categorization.create!(:article_id => ac.article_id,
  21.                                  :category_id => ac.category_id,
  22.                                  :is_primary => (ac.is_primary == 1))
  23.         end
  24.         drop_table :articles_categories
  25.       end
  26.     end
  27.     # Adds the article category to the first post if and only if generating the schema
  28.     if User.count.zero?
  29.       puts "Adding category to default article"
  30.       article = Article.find(:first)
  31.       category = Category.find(:first)
  32.       Categorization.create!(:article_id => article.id,
  33.                              :category_id => category.id,
  34.                              :is_primary => 1)
  35.     end
  36.   end
  37.   def self.down
  38.     create_table :articles_categories, :id => false do |t|
  39.       t.column :article_id, :integer
  40.       t.column :category_id, :integer
  41.       t.column :is_primary, :integer
  42.     end
  43.     unless $schema_generator
  44.       Categorization.find(:all).each do |c|
  45.         ArticlesCategory.create!(:article_id => c.article_id,
  46.                                  :category_id => c.category_id,
  47.                                  :is_primary => c.is_primary ? 1 : 0)
  48.       end
  49.     end
  50.     drop_table :categorizations
  51.   end
  52. end