Sha256: 48793bf0c3d3a1510f5eb16a409ad7a414a683fb17642ad944189295ef5d38d7

Contents?: true

Size: 1.1 KB

Versions: 2

Compression:

Stored size: 1.1 KB

Contents

class SimplifyRedirectRelations < ActiveRecord::Migration[4.2]
  class Redirect < ActiveRecord::Base; end
  class Redirection < ActiveRecord::Base; end

  def up
    add_column :redirects, :content_id, :integer
    Redirect.find_each do |redirect|
      redirections = Redirection.where(redirect_id: redirect.id)
      if redirections.count > 1
        raise "Expected zero or one redirections, found #{redirections.count}"
      end
      redirection = redirections.first
      next unless redirection
      redirect.content_id = redirection.content_id
      redirect.save!
    end
    remove_column :redirects, :origin
    drop_table :redirections
  end

  def down
    create_table :redirections do |t|
      t.integer :content_id
      t.integer :redirect_id
    end

    add_index :redirections, [:content_id]
    add_index :redirections, [:redirect_id]

    add_column :redirects, :origin, :string

    Redirect.find_each do |redirect|
      next unless redirect.content_id
      Redirection.create(redirect_id: redirect.id, content_id: redirect.content_id)
    end
    remove_column :redirects, :content_id
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
publify_core-9.0.1 db/migrate/20150807134129_simplify_redirect_relations.rb
publify_core-9.0.0 db/migrate/20150807134129_simplify_redirect_relations.rb