module ControllerSetterPattern::ActionController

Private Instance Methods

_get_ancestor_resource(setter, model, ancestor) click to toggle source
# File lib/controller_setter_pattern/action_controller.rb, line 55
def _get_ancestor_resource(setter, model, ancestor)
  if instance_variable_defined?("@#{ancestor}")
    resource = instance_variable_get("@#{ancestor}")
  else
    model_class = ancestor.to_s.camelize.constantize
    resource = model_class.find(params["#{model_class.name.underscore}_id".to_sym])
  end

  reflection = _get_reflection(resource.class, model || setter)
  unless reflection.nil?
    reflection_method = reflection.options[:as] || reflection.name
    resource = resource.send(reflection_method) if resource.respond_to?(reflection_method)
  end
end
_get_reflection(klass, assoc_class) click to toggle source
# File lib/controller_setter_pattern/action_controller.rb, line 70
def _get_reflection(klass, assoc_class)
  singular_name = assoc_class.to_s.underscore.singularize.to_sym
  plural_name = assoc_class.to_s.underscore.pluralize.to_sym
  klass.reflect_on_association(singular_name) || klass.reflect_on_association(plural_name)
end
_get_resource(setter, model, ancestor) click to toggle source
# File lib/controller_setter_pattern/action_controller.rb, line 47
def _get_resource(setter, model, ancestor)
  if !ancestor.nil?
    _get_ancestor_resource(setter, model, ancestor)
  else
    (!model.nil? && model.descends_from_active_record?) ? model : setter.to_s.camelize.constantize
  end
end
_get_values_for_finder_params(setter, finder_params) click to toggle source
# File lib/controller_setter_pattern/action_controller.rb, line 80
def _get_values_for_finder_params(setter, finder_params)
  if finder_params.empty?
    values_for_find = params["#{setter}_id".to_sym] || params[:id]
  else
    defaults = finder_params.inject({}) { |h, v| h.merge(v.to_s => nil) }
    values_for_find = defaults.merge(params.permit(finder_params)).values
  end
end
_is_class_model_or_association_method?(resource) click to toggle source
# File lib/controller_setter_pattern/action_controller.rb, line 76
def _is_class_model_or_association_method?(resource)
  resource.is_a?(Class) || resource.class.ancestors.include?(ActiveRecord::Associations::CollectionProxy)
end