class Superpowers::Generators::ScaffoldGenerator
Public Instance Methods
add_resource_route()
click to toggle source
override
# File lib/generators/superpowers/scaffold/scaffold_generator.rb, line 25 def add_resource_route return if options[:actions].present? route_config = "resources :#{file_name.pluralize}\n" if @options[:nested_route] route_config = "resources :#{plural_nested_parent_name} do\n" \ " resources :#{file_name.pluralize}\n" \ "end\n" end route route_config gsub_file 'config/routes.rb', / *resources :#{plural_nested_parent_name}\n/, '' end
create_controller()
click to toggle source
# File lib/generators/superpowers/scaffold/scaffold_generator.rb, line 45 def create_controller template "controller.rb", File.join('app/controllers', "#{controller_file_name}_controller.rb"), behavior: self.behavior end
generate_model_and_insert_association()
click to toggle source
# File lib/generators/superpowers/scaffold/scaffold_generator.rb, line 53 def generate_model_and_insert_association case self.behavior when :invoke invoke :model, [singular_name, migration_attributes, scoped_by_reference].flatten, behavior: :invoke inject_into_file scoped_by_file_path, "\n has_many :#{plural_name}", after: "ApplicationRecord" when :revoke # gsub_file doesn't work for some reason, so this is a quick temp solution content = File.read(scoped_by_file_path).gsub(/\s*has_many :#{plural_name}/, '') File.open(scoped_by_file_path, 'wb') { |file| file.write(content) } invoke :model, [singular_name], behavior: :revoke end end
scaffold_views()
click to toggle source
# File lib/generators/superpowers/scaffold/scaffold_generator.rb, line 49 def scaffold_views invoke "erb:scaffold", [singular_name, migration_attributes], behavior: self.behavior end
Private Instance Methods
migration_attributes()
click to toggle source
# File lib/generators/superpowers/scaffold/scaffold_generator.rb, line 69 def migration_attributes attributes.map { |a| "#{a.name}:#{a.type}" if a.type } end
nested_parent_name()
click to toggle source
# File lib/generators/superpowers/scaffold/scaffold_generator.rb, line 80 def nested_parent_name scoped_arg.gsub('current_', '').singularize end
nested_routes?()
click to toggle source
# File lib/generators/superpowers/scaffold/scaffold_generator.rb, line 111 def nested_routes? @options[:nested_route] end
plural_nested_parent_name()
click to toggle source
# File lib/generators/superpowers/scaffold/scaffold_generator.rb, line 84 def plural_nested_parent_name nested_parent_name.pluralize end
resource_arg()
click to toggle source
# File lib/generators/superpowers/scaffold/scaffold_generator.rb, line 103 def resource_arg name.split('/').last.downcase.singularize end
resource_plural()
click to toggle source
# File lib/generators/superpowers/scaffold/scaffold_generator.rb, line 107 def resource_plural resource_arg.pluralize end
scoped_arg()
click to toggle source
# File lib/generators/superpowers/scaffold/scaffold_generator.rb, line 93 def scoped_arg if @options["scope"].start_with?('current_') @options["scope"] end end
scoped_by_file_path()
click to toggle source
# File lib/generators/superpowers/scaffold/scaffold_generator.rb, line 88 def scoped_by_file_path file_name = scoped_arg.gsub('current_', '') "app/models/#{file_name}.rb" end
scoped_by_reference()
click to toggle source
# File lib/generators/superpowers/scaffold/scaffold_generator.rb, line 73 def scoped_by_reference if scoped_arg.start_with?('current_') klass = scoped_arg.gsub('current_', '') end [klass, ':', 'references'].join('') end
scoped_class()
click to toggle source
# File lib/generators/superpowers/scaffold/scaffold_generator.rb, line 99 def scoped_class scoped_arg.classify end
scoped_resource()
click to toggle source
# File lib/generators/superpowers/scaffold/scaffold_generator.rb, line 115 def scoped_resource if nested_routes? ["@#{nested_parent_name}", resource_plural].join('.') else [scoped_arg, resource_plural].join('.') end end