Class: Stepper::ControllerResource

Inherits:
Object
  • Object
show all
Defined in:
lib/stepper/controllers/controller_resource.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(controller, *args) ⇒ ControllerResource

Returns a new instance of ControllerResource.



13
14
15
16
17
# File 'lib/stepper/controllers/controller_resource.rb', line 13

def initialize(controller, *args)
  @controller = controller
  @params = controller.params
  @name = args.first
end

Class Method Details

.add_before_filter(controller_class, *args) ⇒ Object



4
5
6
7
8
9
10
11
# File 'lib/stepper/controllers/controller_resource.rb', line 4

def self.add_before_filter(controller_class, *args)
  resource_name = args.first
  controller_class.send(:before_filter, :only => [:create, :update, :new]) do |controller|
    controller_resource = controller.class.stepper_resource_class.new(controller, resource_name)
    controller.instance_variable_set :@_stepper_resource_instance, controller_resource.load_resource
    controller.instance_variable_set :@_stepper_name, controller_resource.name
  end
end

Instance Method Details

#load_resourceObject



19
20
21
# File 'lib/stepper/controllers/controller_resource.rb', line 19

def load_resource
  self.resource_instance ||= load_resource_instance
end

#load_resource_instanceObject



23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/stepper/controllers/controller_resource.rb', line 23

def load_resource_instance
  if @params[:action] == 'create'
    resource = resource_class.new(@params[name] || {})
  else
    resource = unless @params[:id].blank?
      resource_class.find(@params[:id])
    else
      resource_class.new
    end
    resource.attributes = @params[name] unless @params[name].blank?
  end
  resource
end

#nameObject



45
46
47
# File 'lib/stepper/controllers/controller_resource.rb', line 45

def name
  @name || name_from_controller
end

#name_from_controllerObject



41
42
43
# File 'lib/stepper/controllers/controller_resource.rb', line 41

def name_from_controller
  @params[:controller].sub("Controller", "").underscore.split('/').last.singularize
end

#resource_classObject



37
38
39
# File 'lib/stepper/controllers/controller_resource.rb', line 37

def resource_class
  name.camelize.constantize
end

#resource_instanceObject



53
54
55
# File 'lib/stepper/controllers/controller_resource.rb', line 53

def resource_instance
  @controller.instance_variable_get "@#{name}"
end

#resource_instance=(object) ⇒ Object



49
50
51
# File 'lib/stepper/controllers/controller_resource.rb', line 49

def resource_instance=(object)
  @controller.instance_variable_set "@#{name}", object
end