Sha256: 1965dbe228261b246bb9388e96c3cd903f33f2960ef7c3e1814ca270bea9090b

Contents?: true

Size: 992 Bytes

Versions: 16

Compression:

Stored size: 992 Bytes

Contents

module PolyController

  private

  def parent_resource
    nested_resources.last
  end

  def nested_resources
    @nested_resources ||= Array.new.tap do |array|
      nested_resource_params.each do |param, value|
        array.append find_resource(param, value)
      end
    end
  end

  def resource_names
    Array.new.tap do |a|
      a.append nested_resource_names
      a.append polymorphic_resource_name
      a.prepend namespace if namespaced?
    end.join('-')

  end

  def nested_resource_params
    params.select { |param, _| param =~ /(.+)_id$/i }
  end

  def namespaced?
    controller_path.split('/').count == 3
  end

  def namespace
    controller_path.split('/')[1]
  end

  def find_resource(param, value)
    param.gsub('_id', '').prepend('gaku/').classify.constantize.find(value)
  end

  def nested_resource_names
    nested_resource_params.keys.map { |p| p.gsub('_id', '').dasherize }
  end

  def polymorphic_resource_name
    controller_name.singularize
  end
end

Version data entries

16 entries across 16 versions & 2 rubygems

Version Path
gaku_frontend-0.3.0 app/controllers/concerns/poly_controller.rb
gaku_frontend-0.3.0.pre.4 app/controllers/concerns/poly_controller.rb
gaku_frontend-0.3.0.pre.3 app/controllers/concerns/poly_controller.rb
gaku_frontend-0.3.0.pre.2 app/controllers/concerns/poly_controller.rb
gaku_frontend-0.3.0.pre.1 app/controllers/concerns/poly_controller.rb
gaku_frontend-0.3.0.pre.0 app/controllers/concerns/poly_controller.rb
gaku-0.2.4 frontend/app/controllers/concerns/poly_controller.rb
gaku_frontend-0.2.4 app/controllers/concerns/poly_controller.rb
gaku-0.2.3 frontend/app/controllers/concerns/poly_controller.rb
gaku_frontend-0.2.3 app/controllers/concerns/poly_controller.rb
gaku-0.2.2 frontend/app/controllers/concerns/poly_controller.rb
gaku_frontend-0.2.2 app/controllers/concerns/poly_controller.rb
gaku-0.2.1 frontend/app/controllers/concerns/poly_controller.rb
gaku_frontend-0.2.1 app/controllers/concerns/poly_controller.rb
gaku-0.2.0 frontend/app/controllers/concerns/poly_controller.rb
gaku_frontend-0.2.0 app/controllers/concerns/poly_controller.rb