# frozen_string_literal: true class AddExcerptToTopics < ActiveRecord::Migration[4.2] def up add_column :topics, :excerpt, :string, limit: 1000 topic_ids = execute("SELECT id FROM topics WHERE pinned_at IS NOT NULL").map { |r| r['id'].to_i } topic_ids.each do |topic_id| cooked = execute("SELECT cooked FROM posts WHERE topic_id = #{topic_id} ORDER BY post_number ASC LIMIT 1")[0]['cooked'] if cooked excerpt = ExcerptParser.get_excerpt(cooked, 220, strip_links: true) execute "UPDATE topics SET excerpt = #{ActiveRecord::Base.sanitize(excerpt)} WHERE id = #{topic_id}" end end end def down remove_column :topics, :excerpt end end