Sha256: 5df36f365c7a2d6db3e5f3ea55a406de01321aadc73c5ef9f6a2a87a6e42e5a0

Contents?: true

Size: 1.55 KB

Versions: 21

Compression:

Stored size: 1.55 KB

Contents

module InheritedResources
  # Shallow provides a functionality that goes on pair with Rails' shallow.
  # It is very similar to "optional" but it actually finds all the parents
  # resources instead of leaving them blank. Consider the following example:
  #
  #   belongs_to :post, :shallow => true do
  #     belongs_to :comment
  #   end
  #
  # When accessed as /comments/1, Inherited Resources will automatically get
  # the post resource so both objects are actually accessible through the views.
  #
  # However, when using optional, Inherited Resources wouldn't actually bother
  # with finding the parent object.
  module ShallowHelpers
    private

      def symbols_for_association_chain #:nodoc:
        parent_symbols = parents_symbols.dup
        instance = nil

        if id = params[:id]
          finder_method = resources_configuration[:self][:finder] || :find
          instance      = self.resource_class.send(finder_method, id)
        elsif parents_symbols.size > 1
          config         = resources_configuration[parent_symbols.pop]
          finder_method  = config[:finder] || :find
          instance       = config[:parent_class].send(finder_method, params[config[:param]])
        end

        load_parents(instance, parent_symbols) if instance
        parents_symbols
      end

      def load_parents(instance, parent_symbols)
        parent_symbols.reverse.each do |parent|
          instance = instance.send(parent)
          config   = resources_configuration[parent]
          params[config[:param]] = instance.to_param
        end
      end
  end
end

Version data entries

21 entries across 21 versions & 2 rubygems

Version Path
inherited_resources-1.14.0 lib/inherited_resources/shallow_helpers.rb
inherited_resources-1.13.1 lib/inherited_resources/shallow_helpers.rb
date_n_time_picker_activeadmin-0.1.2 vendor/bundle/ruby/2.6.0/gems/inherited_resources-1.13.0/lib/inherited_resources/shallow_helpers.rb
date_n_time_picker_activeadmin-0.1.1 vendor/bundle/ruby/2.6.0/gems/inherited_resources-1.13.0/lib/inherited_resources/shallow_helpers.rb
inherited_resources-1.13.0 lib/inherited_resources/shallow_helpers.rb
inherited_resources-1.12.0 lib/inherited_resources/shallow_helpers.rb
inherited_resources-1.11.0 lib/inherited_resources/shallow_helpers.rb
inherited_resources-1.10.0 lib/inherited_resources/shallow_helpers.rb
inherited_resources-1.10.0.rc1 lib/inherited_resources/shallow_helpers.rb
inherited_resources-1.9.0 lib/inherited_resources/shallow_helpers.rb
inherited_resources-1.8.0 lib/inherited_resources/shallow_helpers.rb
inherited_resources-1.7.2 lib/inherited_resources/shallow_helpers.rb
inherited_resources-1.7.1 lib/inherited_resources/shallow_helpers.rb
inherited_resources-1.7.0 lib/inherited_resources/shallow_helpers.rb
inherited_resources-1.6.0 lib/inherited_resources/shallow_helpers.rb
inherited_resources-1.5.1 lib/inherited_resources/shallow_helpers.rb
inherited_resources-1.5.0 lib/inherited_resources/shallow_helpers.rb
inherited_resources-1.4.1 lib/inherited_resources/shallow_helpers.rb
inherited_resources-1.4.0 lib/inherited_resources/shallow_helpers.rb
inherited_resources-1.3.1 lib/inherited_resources/shallow_helpers.rb