Sha256: 0545121db6bfa843ca4b304e115f033bf325ce7703696ff0c3b71ee668c02e26

Contents?: true

Size: 1.99 KB

Versions: 44

Compression:

Stored size: 1.99 KB

Contents

class ActivityChannels < ActiveRecord::Migration
  class ActivityMigration < ActiveRecord::Base
    self.record_timestamps = false
    set_table_name "activities"
  end

  def up
    change_table :activities do |t|
      t.integer :channel_id
    end

    add_index "activities", "channel_id"

    add_foreign_key "activities", "channels", :name => "index_activities_on_channel_id"

    ActivityMigration.reset_column_information

    ActivityMigration.all.each do |a|
      activity = Activity.find(a.id)

      case activity.verb

      when "post", "update"
        a.channel_id = activity.direct_object.channel_id
      else
        contact = Contact.find activity.contact_id

        author_id = contact.sender_id
        owner_id  = contact.receiver_id

        user_author_id =
         (contact.sender_subject.is_a?(User) ?
          contact.sender :
          contact.sender.sent_ties.order(:created_at).first.receiver).id

        a.channel_id =
          Channel.find_or_create_by_author_id_and_user_author_id_and_owner_id(author_id,
                                                                              user_author_id,
                                                                              owner_id).id
      end

      a.save!
    end

    remove_foreign_key "activities", :name => "index_activities_on_contact_id"

    remove_column :activities, :contact_id

    Activity.reset_column_information
  end

  def down
    change_table :activities do |t|
      t.integer :contact_id
    end

    add_index "activities", "contact_id"

    add_foreign_key "activities", "contacts", :name => "index_activities_on_contact_id"

    ActivityMigration.reset_column_information

    ActivityMigration.all.each do |a|
      channel = Channel.find a.channel_id
      a.contact_id = Contact.find_by_sender_id_and_receiver_id(channel.author_id, channel.owner_id)

      a.save!
    end

    remove_foreign_key "activities", :name => "index_activities_on_channel_id"

    remove_column :activities, :channel_id
  end
end

Version data entries

44 entries across 44 versions & 2 rubygems

Version Path
social_stream-0.24.1 base/db/migrate/20120111141717_activity_channels.rb
social_stream-base-0.18.1 db/migrate/20120111141717_activity_channels.rb
social_stream-0.24.0 base/db/migrate/20120111141717_activity_channels.rb
social_stream-base-0.18.0 db/migrate/20120111141717_activity_channels.rb
social_stream-0.23.4 base/db/migrate/20120111141717_activity_channels.rb
social_stream-base-0.17.3 db/migrate/20120111141717_activity_channels.rb
social_stream-0.23.3 base/db/migrate/20120111141717_activity_channels.rb
social_stream-base-0.17.2 db/migrate/20120111141717_activity_channels.rb
social_stream-0.23.2 base/db/migrate/20120111141717_activity_channels.rb
social_stream-base-0.17.1 db/migrate/20120111141717_activity_channels.rb
social_stream-0.23.1 base/db/migrate/20120111141717_activity_channels.rb
social_stream-base-0.17.0 db/migrate/20120111141717_activity_channels.rb
social_stream-0.22.1 base/db/migrate/20120111141717_activity_channels.rb
social_stream-base-0.16.4 db/migrate/20120111141717_activity_channels.rb
social_stream-0.22.0 base/db/migrate/20120111141717_activity_channels.rb
social_stream-base-0.16.3 db/migrate/20120111141717_activity_channels.rb
social_stream-0.21.4 base/db/migrate/20120111141717_activity_channels.rb
social_stream-base-0.16.2 db/migrate/20120111141717_activity_channels.rb
social_stream-0.21.3 base/db/migrate/20120111141717_activity_channels.rb
social_stream-0.21.2 base/db/migrate/20120111141717_activity_channels.rb