module RailsStuff::ResourcesController::StiHelpers

Helper methods for controllers which works with STI models.

Protected Instance Methods

build_resource(attrs = resource_params) click to toggle source

Instantiates object using class_from_request.

Calls superclass method
# File lib/rails_stuff/resources_controller/sti_helpers.rb, line 66
def build_resource(attrs = resource_params)
  @_resource = super.becomes!(class_from_request)
end
class_from_request() click to toggle source

Returns model class depending on `type` attr in params. If resource is requested by id, it returns its class.

# File lib/rails_stuff/resources_controller/sti_helpers.rb, line 54
def class_from_request
  @class_from_request ||=
    if params.key?(:id)
      resource.class
    else
      key = self.class.resource_param_name
      name = params.permit(key => [:type])[key].try!(:[], :type)
      self.class.resource_class_for(name)
    end
end
permitted_attrs() click to toggle source

Merges default attrs with attrs for specific class.

Calls superclass method
# File lib/rails_stuff/resources_controller/sti_helpers.rb, line 71
def permitted_attrs
  super + self.class.permitted_attrs_for[class_from_request]
end