class Katapult::Generators::ModelGenerator

Public Instance Methods

belongs_tos() click to toggle source
# File lib/generators/katapult/model/model_generator.rb, line 55
def belongs_tos
  model.application_model.get_belongs_tos_for model.name
end
create_migration_file() click to toggle source
# File lib/generators/katapult/model/model_generator.rb, line 16
def create_migration_file
  migration_name = "create_#{table_name}"
  migration_attributes = model.db_fields.map(&:for_migration)

  args = [migration_name] + migration_attributes
  options = { timestamps: true, force: true }
  invoke 'active_record:migration', args, options
end
create_model_file() click to toggle source
# File lib/generators/katapult/model/model_generator.rb, line 25
def create_model_file
  template 'model.rb', File.join('app', 'models', "#{file_name}.rb")
end
defaults() click to toggle source
# File lib/generators/katapult/model/model_generator.rb, line 67
def defaults
  {}.tap do |defaults|
    model.attrs.select(&:has_defaults?).each do |attr|
      defaults[attr.name.to_sym] = attr.default
    end
  end
end
flag_attrs() click to toggle source
# File lib/generators/katapult/model/model_generator.rb, line 63
def flag_attrs
  model.attrs.select(&:flag?)
end
generate_unit_tests() click to toggle source
# File lib/generators/katapult/model/model_generator.rb, line 50
def generate_unit_tests
  Generators::ModelSpecsGenerator.new(model, options).invoke_all
end
has_manys() click to toggle source
# File lib/generators/katapult/model/model_generator.rb, line 59
def has_manys
  model.application_model.get_has_manys_for model.name
end
write_factory() click to toggle source
# File lib/generators/katapult/model/model_generator.rb, line 33
def write_factory
  factory = "  factory #{ model.name(:symbol) }"
  factories_file = 'spec/factories/factories.rb'
  # Can happen in multiple transformation runs with authentication
  return if file_contains?(factories_file, factory)

  factory_attrs = model.required_attrs.map do |a|
    "    #{ a.name(:human) } #{ a.test_value.inspect }"
  end

  if factory_attrs.any?
    factory << " do\n#{ factory_attrs.join "\n" }\n  end"
  end

  insert_into_file factories_file, factory + "\n\n", before: /end\n\z/
end
write_traits() click to toggle source
# File lib/generators/katapult/model/model_generator.rb, line 29
def write_traits
  template 'app/models/shared/does_flag.rb' if flag_attrs.any?
end

Private Instance Methods

model() click to toggle source
# File lib/generators/katapult/model/model_generator.rb, line 78
def model
  @element
end