class Admin::Generators::ScaffoldControllerGenerator

Protected Class Methods

check_class_collision(options={}) click to toggle source

Add a class collisions name to be checked on class initialization. You can supply a hash with a :prefix or :suffix to be tested.

Examples

check_class_collision suffix: "Decorator"

If the generator is invoked with class name Admin, it will check for the presence of “AdminDecorator”.

# File lib/generators/admin/scaffold_controller/scaffold_controller_generator.rb, line 150
def self.check_class_collision(options={})
  define_method :check_class_collision do
    name = if self.respond_to?(:prefixed_controller_class_name) # for ScaffoldBase
      prefixed_controller_class_name
    elsif self.respond_to?(:prefixed_controller_class_name) # for ScaffoldBase
      controller_class_name
    else
      class_name
    end

    class_collisions "#{options[:prefix]}#{name}#{options[:suffix]}"
  end
end

Public Instance Methods

copy_view_files() click to toggle source
# File lib/generators/admin/scaffold_controller/scaffold_controller_generator.rb, line 67
def copy_view_files
  available_views.each do |view|
    filename = filename_with_extensions(view)
    if bootstrap
      template_path = "views/#{handler}_bootstrap/#{filename}.erb"
    else
      template_path = "views/#{handler}/#{filename}.erb"
    end
    template template_path, File.join("app/views", prefix, controller_file_path, filename)
  end

  # I think there should be a better way to detect if jbuilder is in use
  if Gem::Specification.find_all_by_name('jbuilder').length >= 1
    %w(index show).each do |view|
      template "views/jbuilder/#{view}.json.jbuilder.erb", File.join("app/views", prefix, controller_file_path, "#{view}.json.jbuilder")
    end
  end
end
create_controller_files() click to toggle source
# File lib/generators/admin/scaffold_controller/scaffold_controller_generator.rb, line 45
def create_controller_files
  # I think there should be a better way to detect if jbuilder is in use
  # If you know it, please let me know
  if Gem::Specification.find_all_by_name('jbuilder').length >= 1
    template "controllers/jbuilder/controller.rb.erb", File.join('app/controllers', prefix, class_path, "#{controller_file_name}_controller.rb")
  else
    template "controllers/railties/controller.rb.erb", File.join('app/controllers', prefix, class_path, "#{controller_file_name}_controller.rb")
  end
end
create_root_folder() click to toggle source
# File lib/generators/admin/scaffold_controller/scaffold_controller_generator.rb, line 63
def create_root_folder
  empty_directory File.join("app/views", prefix, controller_file_path)
end
create_test_files() click to toggle source
# File lib/generators/admin/scaffold_controller/scaffold_controller_generator.rb, line 55
def create_test_files
  template "tests/test_unit/functional_test.rb.erb", File.join("test/controllers", prefix, controller_class_path, "#{controller_file_name}_controller_test.rb")
end

Protected Instance Methods

attributes_hash() click to toggle source
# File lib/generators/admin/scaffold_controller/scaffold_controller_generator.rb, line 164
def attributes_hash
  return if attributes_names.empty?

  attributes_names.map do |name|
    if %w(password password_confirmation).include?(name) && attributes.any?(&:password_digest?)
      "#{name}: 'secret'"
    else
      "#{name}: @#{singular_table_name}.#{name}"
    end
  end.sort.join(', ')
end
attributes_list(attributes = attributes_names) click to toggle source
# File lib/generators/admin/scaffold_controller/scaffold_controller_generator.rb, line 180
def attributes_list(attributes = attributes_names)
  if self.attributes.any? {|attr| attr.name == 'password' && attr.type == :digest}
    attributes = attributes.reject {|name| %w(password password_confirmation).include? name}
  end

  attributes.map { |a| ":#{a}"} * ', '
end
attributes_list_with_timestamps() click to toggle source
# File lib/generators/admin/scaffold_controller/scaffold_controller_generator.rb, line 176
def attributes_list_with_timestamps
  attributes_list(attributes_names + %w(created_at updated_at))
end
available_views() click to toggle source
# File lib/generators/admin/scaffold_controller/scaffold_controller_generator.rb, line 124
def available_views
  %w(index edit show new _form)
end
bootstrap() click to toggle source
# File lib/generators/admin/scaffold_controller/scaffold_controller_generator.rb, line 92
def bootstrap
  options[:bootstrap]
end
filename_with_extensions(name) click to toggle source
# File lib/generators/admin/scaffold_controller/scaffold_controller_generator.rb, line 136
def filename_with_extensions(name)
  [name, format, handler].compact.join(".")
end
format() click to toggle source
# File lib/generators/admin/scaffold_controller/scaffold_controller_generator.rb, line 128
def format
  :html
end
handler() click to toggle source
# File lib/generators/admin/scaffold_controller/scaffold_controller_generator.rb, line 132
def handler
  options[:template_engine]
end
parent_controller_class_name() click to toggle source
# File lib/generators/admin/scaffold_controller/scaffold_controller_generator.rb, line 108
def parent_controller_class_name
  options[:parent_controller].capitalize
end
prefix() click to toggle source
# File lib/generators/admin/scaffold_controller/scaffold_controller_generator.rb, line 96
def prefix
  options[:prefix_name]
end
prefixed_class_name() click to toggle source
# File lib/generators/admin/scaffold_controller/scaffold_controller_generator.rb, line 100
def prefixed_class_name
  "#{prefix.capitalize}::#{class_name}"
end
prefixed_controller_class_name() click to toggle source
# File lib/generators/admin/scaffold_controller/scaffold_controller_generator.rb, line 104
def prefixed_controller_class_name
  "#{prefix.capitalize}::#{controller_class_name}"
end
prefixed_index_helper() click to toggle source
# File lib/generators/admin/scaffold_controller/scaffold_controller_generator.rb, line 120
def prefixed_index_helper
  "#{prefix}_#{index_helper}"
end
prefixed_plain_model_url() click to toggle source
# File lib/generators/admin/scaffold_controller/scaffold_controller_generator.rb, line 116
def prefixed_plain_model_url
  "#{prefix}_#{singular_table_name}"
end
prefixed_route_url() click to toggle source
# File lib/generators/admin/scaffold_controller/scaffold_controller_generator.rb, line 112
def prefixed_route_url
  "/#{prefix}#{route_url}"
end