Sha256: 9ba7eb3b6b48c600ef60b0e82effb216e19b6be71c1405d92771d19ca1afed82

Contents?: true

Size: 748 Bytes

Versions: 4

Compression:

Stored size: 748 Bytes

Contents

module PushType
  module Fields
    module Relations
      
      def json_key
        suffix = multiple? ? '_ids' : '_id'
        (name.singularize + suffix).to_sym
      end

      def relation_class
        (@opts[:class] || name).to_s.classify.constantize
      end

      def relation_root
        relation_class
      end

      def relation_tree
        flatten_tree relation_root.hash_tree
      end

      private

      def flatten_tree(hash_tree, d = 0)
        hash_tree.flat_map do |parent, children|
          [
            {
              value:  parent.id,
              text:   parent.title,
              depth:  d
            },
            flatten_tree(children, d+1)
          ]
        end.flatten
      end

    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
push_type_core-0.5.3 lib/push_type/fields/relations.rb
push_type_core-0.5.2 lib/push_type/fields/relations.rb
push_type_core-0.5.1 lib/push_type/fields/relations.rb
push_type_core-0.5.0 lib/push_type/fields/relations.rb