softace/paperclip_database

View on GitHub
lib/generators/paperclip_database/migration/migration_generator.rb

Summary

Maintainability
A
0 mins
Test Coverage
require 'rails/generators/active_record'

module PaperclipDatabase
  module Generators
    class MigrationGenerator < ActiveRecord::Generators::Base
      desc "Create a migration to add database storage for the paperclip database storage." +
        "The NAME argument is the name of your model, and the following " +
        "arguments are the name of the attachments"

      argument :attachment_names,
      :required => true,
      :type => :array,
      :desc => "The names of the attachment(s) to add.",
      :banner => "attachment_one attachment_two attachment_three ..."

      def self.source_root
        @source_root ||= File.expand_path('../templates', __FILE__)
      end

      def generate_migration
        migration_template "migration.rb.erb", "db/migrate/#{migration_file_name}", migration_version: migration_version
      end

      def migration_name
        "create_#{name.underscore.tr('/', '_')}_#{attachment_names.map{|n| n.pluralize}.join('_and_')}"
      end

      def migration_file_name
        "#{migration_name}.rb"
      end

      def migration_class_name
        migration_name.camelize
      end

      def migration_version
        if Rails.version.to_i >= 5
          "[#{Rails::VERSION::MAJOR}.#{Rails::VERSION::MINOR}]"
        end
      end

    end
  end
end