Module: AutoloadResources::Able::ClassMethods

Defined in:
lib/autoload_resources/able.rb

Instance Method Summary collapse

Instance Method Details

#autoload_instance_variable_name(klass, action_name) ⇒ Object



31
32
33
34
35
36
# File 'lib/autoload_resources/able.rb', line 31

def autoload_instance_variable_name(klass, action_name)
  case String(action_name)
  when "index" then klass.model_name.plural
  else klass.model_name.element
  end
end

#autoload_instance_variable_names(action_name) ⇒ Object



38
39
40
41
42
43
44
# File 'lib/autoload_resources/able.rb', line 38

def autoload_instance_variable_names(action_name)
  resource_class.ancestors.grep(Class).select do |klass|
    klass != ActiveRecord::Base && klass.ancestors.include?(ActiveRecord::Base)
  end.collect do |klass|
    autoload_instance_variable_name(klass, action_name)
  end
end

#autoload_procsObject



27
28
29
# File 'lib/autoload_resources/able.rb', line 27

def autoload_procs
  @autoload_procs ||= HashWithIndifferentAccess.new
end

#autoload_resourcesObject



21
22
23
24
25
# File 'lib/autoload_resources/able.rb', line 21

def autoload_resources
  set_default_autoload_procs
  yield if block_given?
  before_action :autoload_resources
end

#default_autoload_procsObject



53
54
55
56
57
58
59
60
# File 'lib/autoload_resources/able.rb', line 53

def default_autoload_procs
  {
    index: Proc.new { resource_class.all },
    new: Proc.new { resource_class.new },
    create: Proc.new { resource_class.new(params[resource_class.model_name.element]) },
    [:show, :edit, :update, :destroy] => Proc.new { resource_class.find(params[:id]) }
  }
end

#for_actions(actions, proc = nil, &block) ⇒ Object Also known as: for_action



62
63
64
65
66
# File 'lib/autoload_resources/able.rb', line 62

def for_actions(actions, proc=nil, &block)
  Array(actions).each do |action|
    autoload_procs[action] = block || proc
  end
end

#set_default_autoload_procsObject



46
47
48
49
50
51
# File 'lib/autoload_resources/able.rb', line 46

def set_default_autoload_procs
  return unless resource_class
  default_autoload_procs.each do |actions, closure|
    for_actions(actions, closure)
  end
end