Class: AddNumberColumnToRecorderRevisions
- Inherits:
-
ActiveRecord::Migration
- Object
- ActiveRecord::Migration
- AddNumberColumnToRecorderRevisions
- Defined in:
- lib/generators/recorder/templates/add_number_column_to_recorder_revisions.rb
Overview
This migration adds number column to the ‘revisions` table.
Instance Method Summary collapse
Instance Method Details
#down ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/generators/recorder/templates/add_number_column_to_recorder_revisions.rb', line 33 def down execute <<-SQL DROP TRIGGER update_recorder_revisions_number; SQL execute <<-SQL DROP FUNCTION IF EXISTS get_recorder_revisions_number; SQL remove_column :recorder_revisions, :number end |
#up ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/generators/recorder/templates/add_number_column_to_recorder_revisions.rb', line 5 def up add_column :recorder_revisions, :number, :integer, null: false, default: 0 execute <<~SQL CREATE OR REPLACE FUNCTION get_recorder_revisions_number() RETURNS trigger AS $BODY$ BEGIN SELECT COALESCE(MAX(recorder_revisions.number), 0) + 1 INTO NEW.number FROM recorder_revisions WHERE recorder_revisions.item_type = NEW.item_type AND recorder_revisions.item_id = NEW.item_id; #{" "} RETURN NEW; END; $BODY$ LANGUAGE plpgsql; SQL execute <<~SQL CREATE TRIGGER update_recorder_revisions_number BEFORE INSERT ON recorder_revisions FOR EACH ROW EXECUTE PROCEDURE get_recorder_revisions_number(); SQL end |