Module: ActionController::UpdateAs

Defined in:
lib/modify_resource/rails/action_controller/update_as.rb

Defined Under Namespace

Modules: ClassMethods

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



40
41
42
# File 'lib/modify_resource/rails/action_controller/update_as.rb', line 40

def self.included(base)
  base.extend(ClassMethods)
end

Instance Method Details

#update_as(user, current_resource, nested_resources = {}) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/modify_resource/rails/action_controller/update_as.rb', line 22

def update_as(user, current_resource, nested_resources={})
  case nested_resources
  when Symbol, String, Array
    update_resource(current_resource, Array(nested_resources), as: user)
  else
    return update_resource(current_resource, as: user) if nested_resources.empty?

    nested_resources.each do |res, fields|
      res = if res.to_s == current_resource.class.name.downcase
        current_resource
      else
        current_resource.send(res)
      end
      update_resource res, fields, as: user
    end
  end
end