Class: Layered::Resource::Generators::ScaffoldGenerator

Inherits:
Rails::Generators::NamedBase
  • Object
show all
Defined in:
lib/generators/layered/resource/scaffold/scaffold_generator.rb

Overview

One-shot scaffolder: generates the migration + model (via Rails' built-in model generator), an app/layered_resources/<name>_resource.rb (via layered:resource), and appends a layered_resources :name route. Views are intentionally left to the gem's defaults - run rails g layered:resource:views <name> to eject them.

rails g layered:resource:scaffold article title:string body:text

Instance Method Summary collapse

Instance Method Details

#add_routeObject



49
50
51
# File 'lib/generators/layered/resource/scaffold/scaffold_generator.rb', line 49

def add_route
  route "layered_resources :#{plural_name}#{route_controller_option}#{route_action_filter}"
end

#create_modelObject



31
32
33
34
35
# File 'lib/generators/layered/resource/scaffold/scaffold_generator.rb', line 31

def create_model
  return if options[:skip_model]

  invoke "model", [singular_name, *attributes.map(&:to_s)]
end

#create_resource_fileObject



37
38
39
# File 'lib/generators/layered/resource/scaffold/scaffold_generator.rb', line 37

def create_resource_file
  invoke ResourceGenerator, [singular_name, *attributes.map(&:to_s)], skip_route: true
end

#eject_controllerObject



41
42
43
# File 'lib/generators/layered/resource/scaffold/scaffold_generator.rb', line 41

def eject_controller
  invoke "layered:resource:controller", [plural_name] if options[:controller]
end

#eject_viewsObject



45
46
47
# File 'lib/generators/layered/resource/scaffold/scaffold_generator.rb', line 45

def eject_views
  invoke ViewsGenerator, [plural_name] if options[:views]
end

#show_next_stepsObject



53
54
55
56
57
58
59
60
# File 'lib/generators/layered/resource/scaffold/scaffold_generator.rb', line 53

def show_next_steps
  say ""
  say "Next steps for app/layered_resources/#{singular_name}_resource.rb:"
  say "  - Add `validates` calls to #{resource_class_name} for any required fields - the form marks fields required based on unconditional presence validators."
  say "  - Consider `default_sort attribute: :created_at, direction: :desc` (or another column) so the index has a stable order."
  say "  - Consider `search_fields [...]` listing the columns the index search box should match against."
  say ""
end