module Migrations::ModelMigrator

Public Instance Methods

create_model_migration() click to toggle source
# File lib/generators/referable/migrations/model_migrator.rb, line 3
def create_model_migration
  generate 'migration',
           "add_referral_fields_to_#{file_name} \
           last_reward_acquired_id:integer \
           referral_slug \
           referrals_count:integer"
  add_model_migration_details
end

Private Instance Methods

add_model_migration_details() click to toggle source
# File lib/generators/referable/migrations/model_migrator.rb, line 14
def add_model_migration_details
  return unless migration_created?("_add_referral_fields_to_#{file_name}")
  constrain_count
  write_slug_data
  constrain_slug
end
constrain_count() click to toggle source
# File lib/generators/referable/migrations/model_migrator.rb, line 21
def constrain_count
  inject_into_file(last_migration, after: '_count, :integer') do
    ', default: 0, null: false'
  end
end
constrain_slug() click to toggle source
# File lib/generators/referable/migrations/model_migrator.rb, line 42
def constrain_slug
  inject_into_file(last_migration, after: 'Add constraint') do
    "\n    change_column_null :#{plural_name}, :referral_slug, false"
  end
end
write_slug_data() click to toggle source
# File lib/generators/referable/migrations/model_migrator.rb, line 27
    def write_slug_data
      inject_into_file(last_migration, after: 'null: false') do
        <<~TEXT
        \n
            # Update each record with a slug
            #{class_name}.find_each do |#{file_name}|
              #{file_name}.valid?
              #{file_name}.update_attribute(:slug, #{file_name}.slug)
            end

            # Add constraint
        TEXT
      end
    end