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