Method: Neo4j::ActiveNode::Labels.model_for_labels

Defined in:
lib/neo4j/active_node/labels.rb

.model_for_labels(labels) ⇒ Object

Finds an appropriate matching model given a set of labels which are assigned to a node



74
75
76
77
78
79
80
81
82
83
84
85
# File 'lib/neo4j/active_node/labels.rb', line 74

def self.model_for_labels(labels)
  labels.sort!
  return MODELS_FOR_LABELS_CACHE[labels] if MODELS_FOR_LABELS_CACHE[labels]

  models = WRAPPED_CLASSES.select do |model|
    (model.mapped_label_names - labels).empty?
  end

  MODELS_FOR_LABELS_CACHE[labels] = models.max_by do |model|
    (model.mapped_label_names & labels).size
  end
end