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



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

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



34
35
36
37
38
39
40
# File 'lib/autoload_resources/able.rb', line 34

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



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

def autoload_procs
  @autoload_procs ||= HashWithIndifferentAccess.new
end

#autoload_resourcesObject



17
18
19
20
21
# File 'lib/autoload_resources/able.rb', line 17

def autoload_resources
  set_default_autoload_procs
  yield if block_given?
  before_action :autoload_resources
end

#default_autoload_procsObject



49
50
51
52
53
54
55
56
# File 'lib/autoload_resources/able.rb', line 49

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

#default_create_procObject



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

def default_create_proc
  Proc.new do
    params_method = autoload_instance_variable_names(:create).find do |name|
      self.respond_to? "#{name}_params"
    end
    return unless params_method
    resource_class.new(send(params_method))
  end
end

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



68
69
70
71
72
# File 'lib/autoload_resources/able.rb', line 68

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

#set_default_autoload_procsObject



42
43
44
45
46
47
# File 'lib/autoload_resources/able.rb', line 42

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