Sha256: 4c87270ef19825c79adbdce9c8c5f3db4da7c7d839ebb9443d346d9a8c808eba
Contents?: true
Size: 1.95 KB
Versions: 2
Compression:
Stored size: 1.95 KB
Contents
module Neo4j::ActiveNode module Property extend ActiveSupport::Concern include Neo4j::Shared::Property def initialize(attributes = nil) super(attributes) @attributes ||= Neo4j::AttributeSet.new(self.class.attributes_nil_hash, self.class.attributes.keys) end module ClassMethods # Extracts keys from attributes hash which are associations of the model # TODO: Validate separately that relationships are getting the right values? Perhaps also store the values and persist relationships on save? def extract_association_attributes!(attributes) return unless contains_association?(attributes) attributes.each_with_object({}) do |(key, _), result| result[key] = attributes.delete(key) if self.association_key?(key) end end def association_key?(key) association_method_keys.include?(key.to_sym) end private def contains_association?(attributes) return false unless attributes attributes.each_key { |k| return true if association_key?(k) } false end # All keys which could be association setter methods (including _id/_ids) def association_method_keys @association_method_keys ||= associations_keys.map(&:to_sym) + associations.values.map do |association| if association.type == :has_one "#{association.name}_id" elsif association.type == :has_many "#{association.name.to_s.singularize}_ids" end.to_sym end end end private def inspect_attributes id_property_name = self.class.id_property_name.to_s attribute_pairs = attributes.except(id_property_name).sort.map do |key, value| [key, (value.is_a?(String) && value.size > 100) ? value.dup[0..100] : value] end attribute_pairs.unshift([id_property_name, self.send(id_property_name)]) attribute_pairs end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
activegraph-10.0.0.pre.alpha.11 | lib/neo4j/active_node/property.rb |
activegraph-10.0.0.pre.alpha.10 | lib/neo4j/active_node/property.rb |