Sha256: 406e7ce13e5eaa214da24230d34ef9f2476685b04f2cd5f6b70558a7f0a56cfa

Contents?: true

Size: 1.21 KB

Versions: 1

Compression:

Stored size: 1.21 KB

Contents

class MergeRevisionsIntoPosts < ActiveRecord::Migration
  class Monologue::PostsRevision < ActiveRecord::Base
    attr_accessible :title, :content, :url, :published_at, :post_id
  end

  class Monologue::Post < ActiveRecord::Base
  end

  def up
    Monologue::Post.reset_column_information
    add_column :monologue_posts, :title, :string
    add_column :monologue_posts, :content, :text
    add_column :monologue_posts, :url, :string
    add_column :monologue_posts, :published_at, :datetime
    remove_column :monologue_posts, :posts_revision_id
    add_index :monologue_posts, :url, unique: true

    Monologue::Post.reset_column_information

    Monologue::Post.all.each do |post|
      latest_revision =  latest_revision_for(post)
      post.title =latest_revision.title
      post.content =latest_revision.content
      post.url =latest_revision.url
      post.published_at =latest_revision.published_at
      post.save(validate: false)
    end

    drop_table :monologue_posts_revisions
  end

  def down
    raise ActiveRecord::IrreversibleMigration
  end

  private
  def latest_revision_for(post)
    Monologue::PostsRevision.where("post_id = ?", post.id).order("monologue_posts_revisions.updated_at DESC").limit(1).first
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
monologue-0.3.0 db/migrate/20130509015400_merge_revisions_into_posts.rb