Module: AutoloadResources::Able::ClassMethods
- Defined in:
- lib/autoload_resources/able.rb
Instance Method Summary collapse
- #autoload_instance_variable_name(klass, action_name) ⇒ Object
- #autoload_instance_variable_names(action_name) ⇒ Object
- #autoload_procs ⇒ Object
- #autoload_resources ⇒ Object
- #default_autoload_procs ⇒ Object
- #default_create_proc ⇒ Object
- #for_actions(actions, proc = nil, &block) ⇒ Object (also: #for_action)
- #set_default_autoload_procs ⇒ Object
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_procs ⇒ Object
23 24 25 |
# File 'lib/autoload_resources/able.rb', line 23 def autoload_procs @autoload_procs ||= HashWithIndifferentAccess.new end |
#autoload_resources ⇒ Object
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_procs ⇒ Object
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_proc ⇒ Object
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_procs ⇒ Object
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 |