module ProgrammableScaffoldRails::ActionControllerExtensions::ClassMethods

Public Instance Methods

programmable_scaffold(options={}) click to toggle source

This is the core method which generate the scaffold things. It’s important to notice that it uses a constant because it behaves like a class, can be inherited, overridden in child classes but it’s “frozen” for the class where it’s defined.

# File lib/programmable_scaffold_rails/action_controller_extensions.rb, line 35
def programmable_scaffold(options={})
  options = ::ProgrammableScaffoldRails::BASE_OPTIONS.merge(options)
  crud    = ::ProgrammableScaffoldRails::CRUD_METHODS

  # Validate
  if options.include?(:only) && options.include?(:except)
    raise ":only and :except option must not be used toghether"
  end

  # Process
  crud = options[:only]          if options.include?(:only)
  crud = crud - options[:except] if options.include?(:except)

  send( :include, ProgrammableScaffoldRails::ActionControllerExtensions::InstanceHelpers )

  send( :include, ProgrammableScaffoldRails::Scaffold::New     ) if crud.include?(:new)
  send( :include, ProgrammableScaffoldRails::Scaffold::Create  ) if crud.include?(:create)
  send( :include, ProgrammableScaffoldRails::Scaffold::Index   ) if crud.include?(:index)
  send( :include, ProgrammableScaffoldRails::Scaffold::Show    ) if crud.include?(:show)
  send( :include, ProgrammableScaffoldRails::Scaffold::Edit    ) if crud.include?(:edit)
  send( :include, ProgrammableScaffoldRails::Scaffold::Update  ) if crud.include?(:update)
  send( :include, ProgrammableScaffoldRails::Scaffold::Destroy ) if crud.include?(:destroy)

  # Store
  const_set(:PROGRAMMABLE_SCAFFOLD, OpenStruct.new(options).freeze)

  self
end
programmable_scaffold_options() click to toggle source
# File lib/programmable_scaffold_rails/action_controller_extensions.rb, line 64
def programmable_scaffold_options
  const_get(:PROGRAMMABLE_SCAFFOLD)
end