Sha256: e9a836c5533bda74c29ff28813ea876e708ec35aa412b92ce6893ff9e2ddea7f

Contents?: true

Size: 1.22 KB

Versions: 25

Compression:

Stored size: 1.22 KB

Contents

class MoveAvatars < ActiveRecord::Migration
  class AvatarMigration < ActiveRecord::Base
    self.table_name = 'avatars'

    has_attached_file :logo
  end

  class ActorMigration < ActiveRecord::Base
    self.table_name = 'actors'
    self.record_timestamps = false

    has_one :avatar,
            conditions: { active: true },
            class_name: "AvatarMigration",
            foreign_key: :actor_id
    
    has_attached_file :logo
  end

  def up
    add_attachment :actors, :logo

    ActorMigration.all.each do |a|
      next if a.avatar.blank? ||
        ! File.exists?(a.avatar.logo.path.gsub('/move_avatars/avatar_migrations/', '/avatars/'))

      %w( file_name file_size content_type updated_at ).each do |f|
        a.update_attribute "logo_#{ f }", a.avatar.send("logo_#{ f }")
      end

      old_path = a.avatar.logo.path.gsub('/move_avatars/avatar_migrations/', '/avatars/').gsub(/original\/.*/, '.')
      new_path = a.logo.path.gsub('/move_avatars/actor_migrations/', '/actors/').gsub(/\/original\/.*/, '')
      puts "Copy #{ old_path } to #{ new_path }"

      FileUtils.mkdir_p new_path
      FileUtils.cp_r old_path, new_path
    end

    drop_table :avatars
  end

  def down
    raise "Irreversible migration"
  end
end

Version data entries

25 entries across 25 versions & 2 rubygems

Version Path
social_stream-2.2.2 base/db/migrate/20130305101231_move_avatars.rb
social_stream-base-2.2.2 db/migrate/20130305101231_move_avatars.rb
social_stream-2.2.1 base/db/migrate/20130305101231_move_avatars.rb
social_stream-base-2.2.1 db/migrate/20130305101231_move_avatars.rb
social_stream-2.2.0 base/db/migrate/20130305101231_move_avatars.rb
social_stream-base-2.2.0 db/migrate/20130305101231_move_avatars.rb
social_stream-2.1.1 base/db/migrate/20130305101231_move_avatars.rb
social_stream-2.1.0 base/db/migrate/20130305101231_move_avatars.rb
social_stream-base-2.1.0 db/migrate/20130305101231_move_avatars.rb
social_stream-2.0.4 base/db/migrate/20130305101231_move_avatars.rb
social_stream-base-2.0.4 db/migrate/20130305101231_move_avatars.rb
social_stream-2.0.3 base/db/migrate/20130305101231_move_avatars.rb
social_stream-base-2.0.3 db/migrate/20130305101231_move_avatars.rb
social_stream-2.0.2 base/db/migrate/20130305101231_move_avatars.rb
social_stream-base-2.0.2 db/migrate/20130305101231_move_avatars.rb
social_stream-2.0.1 base/db/migrate/20130305101231_move_avatars.rb
social_stream-base-2.0.1 db/migrate/20130305101231_move_avatars.rb
social_stream-2.0.0 base/db/migrate/20130305101231_move_avatars.rb
social_stream-base-2.0.0 db/migrate/20130305101231_move_avatars.rb
social_stream-2.0.0.beta3 base/db/migrate/20130305101231_move_avatars.rb