module RailsStuff::ResourcesController::StiHelpers::ClassMethods

Attributes

resource_class_by_type[W]
use_resource_class_for_invalid_type[RW]

Public Instance Methods

permit_attrs_for(klass, *attrs) click to toggle source

Permits attrs only for specific class.

# File lib/rails_stuff/resources_controller/sti_helpers.rb, line 45
def permit_attrs_for(klass, *attrs)
  permitted_attrs_for[klass].concat attrs
end
permitted_attrs_for() click to toggle source

Class-level accessor to permitted attributes for specisic class.

# File lib/rails_stuff/resources_controller/sti_helpers.rb, line 40
def permitted_attrs_for
  @permitted_attrs_for ||= Hash.new { |h, k| h[k] = [] }
end
resource_class_by_type() click to toggle source

Returns hash which is used to get subclass for requested type.

By default it uses `.types_list` or `.descendants` to get list of classes and indexes them by class names.

# File lib/rails_stuff/resources_controller/sti_helpers.rb, line 16
def resource_class_by_type
  @resource_class_by_type ||=
    if resource_class.respond_to?(:types_list)
      resource_class.types_list
    else
      resource_class.descendants
    end.index_by(&:name)
end
resource_class_for(name) click to toggle source
# File lib/rails_stuff/resources_controller/sti_helpers.rb, line 27
def resource_class_for(name)
  return resource_class unless name
  resource_class_by_type[name] ||
    if use_resource_class_for_invalid_type
      resource_class
    else
      raise(InvalidType, "No type mapped for #{name.inspect}")
    end
end