Sha256: 65200c307333a758bcdefbe72a56117b8a5553de3396f49a812ed6c5b2eea8a6

Contents?: true

Size: 1.75 KB

Versions: 117

Compression:

Stored size: 1.75 KB

Contents

class AddUserOption < ActiveRecord::Migration
  def self.up
    add_column :backlogs, :enable_users, :boolean
    add_column :estimates, :user_id, :integer, :references => :users
    add_column :works, :user_id, :integer, :references => :users
    change_column_null :works, :completed_at, :timestamp, true
    started_tasks = Task.find(:all, :conditions => 'work_started_at IS NOT NULL')
    started_tasks.each do |task|
      started_work = Work.new(:task_id => task.id, :started_at => task.work_started_at)
      started_work.save!
    end
    remove_column :tasks, :work_started_at
  end
  
  def self.down
    add_column :tasks, :work_started_at, :datetime
    started_works = Work.find(:all, :conditions => 'completed_at IS NULL')
    started_works.each do |work|
      task = Task.find(work.task_id)
      task.work_started_at = work.started_at
      task.save!
      work.destroy
    end
    change_column_null :works, :completed_at, :timestamp, false
    remove_column :works, :user_id
    remove_column :estimates, :user_id
    remove_column :backlogs, :enable_users
  end
  
  def self.change_column_null(table_name, column_name, column_type, null, default = nil) #:nodoc: 
    unless null || default.nil? 
      execute("UPDATE #{table_name} SET #{column_name}=#{quote(default)} WHERE #{column_name} IS NULL") 
    end
    if ActiveRecord::Base.connection.adapter_name.downcase == "postgresql"
      execute("ALTER TABLE #{table_name} ALTER #{column_name} #{null ? 'DROP' : 'SET'} NOT NULL") 
    elsif ActiveRecord::Base.connection.adapter_name.downcase == "mysql"
      execute("ALTER TABLE #{table_name} MODIFY COLUMN #{column_name} #{column_type} #{null ? 'NULL' : 'NOT NULL'}")
    end
  end
  
end

class Task < ActiveRecord::Base
end

class Work < ActiveRecord::Base
end

Version data entries

117 entries across 117 versions & 1 rubygems

Version Path
backlog-0.36.2 db/migrate/015_add_user_option.rb
backlog-0.0.5 db/migrate/015_add_user_option.rb
backlog-0.1.1 db/migrate/015_add_user_option.rb
backlog-0.1.0 db/migrate/015_add_user_option.rb
backlog-0.1.2 db/migrate/015_add_user_option.rb
backlog-0.10.0 db/migrate/015_add_user_option.rb
backlog-0.10.1 db/migrate/015_add_user_option.rb
backlog-0.10.4 db/migrate/015_add_user_option.rb
backlog-0.10.2 db/migrate/015_add_user_option.rb
backlog-0.10.5 db/migrate/015_add_user_option.rb
backlog-0.10.3 db/migrate/015_add_user_option.rb
backlog-0.10.6 db/migrate/015_add_user_option.rb
backlog-0.10.7 db/migrate/015_add_user_option.rb
backlog-0.11.0 db/migrate/015_add_user_option.rb
backlog-0.10.8 db/migrate/015_add_user_option.rb
backlog-0.12.0 db/migrate/015_add_user_option.rb
backlog-0.12.2 db/migrate/015_add_user_option.rb
backlog-0.12.1 db/migrate/015_add_user_option.rb
backlog-0.12.4 db/migrate/015_add_user_option.rb
backlog-0.12.3 db/migrate/015_add_user_option.rb