class Natra::Generators::ModelGenerator

Attributes

class_name[R]
file_name[R]
migration_class_name[R]
migration_name[R]
model_name[R]
table_name[R]

Public Class Methods

source_root() click to toggle source
# File lib/natra/generators/model/model_generator.rb, line 15
def self.source_root
  File.dirname(__FILE__)
end

Public Instance Methods

create_migration() click to toggle source
# File lib/natra/generators/model/model_generator.rb, line 41
def create_migration
  return unless options[:migration]

  migration_files = Dir.entries('db/migrate').reject { |path| File.directory? path }

  if duplicate = migration_files.find { |file| file.include?(migration_name) }
    say_status :identical, "db/migrate/#{duplicate}", :blue
  else
    version = Time.now.utc.strftime('%Y%m%d%H%M%S')
    migration_file_name = "#{version}_#{migration_name}.rb"

    template 'migration.rb.erb', File.join('db/migrate', migration_file_name)
  end
end
create_model() click to toggle source
# File lib/natra/generators/model/model_generator.rb, line 33
def create_model
  unless model_name == name
    say "[WARNING] The model name '#{name}' was recognized as a plural, using the singular '#{model_name}' instead."
  end

  template 'model.rb.erb', File.join('app/models', "#{file_name}.rb")
end
setup() click to toggle source
# File lib/natra/generators/model/model_generator.rb, line 19
def setup
  @model_name           = name.singularize
  @class_name           = model_name.camel_case
  @file_name            = model_name.underscore
  @table_name           = file_name.pluralize
  @migration_name       = "create_#{table_name}"
  @migration_class_name = migration_name.camel_case

  attributes.map! do |attribute|
    field = attribute.split(':')
    { name: field[0], type: field[1] || 'string' }
  end
end