ClassMethods

Constants

Methods

#attribute

Defines an attribute

For each attribute that is defined, a getter and setter will be added as an instance method to the model. An {AttributeDefinition} instance will be added to result of the attributes class method.

def attribute(name)
  if dangerous_attribute?(name)
    fail Neo4j::DangerousAttributeError, %(an attribute method named "#{name}" would conflict with an existing method)
  else
    attribute!(name)
  end
end
#attribute_names

Returns an Array of attribute names as Strings

def attribute_names
  attributes.keys
end
#attributes

Returns a Hash of AttributeDefinition instances

def attributes
  @attributes ||= ActiveSupport::HashWithIndifferentAccess.new
end
#dangerous_attribute?

Determine if a given attribute name is dangerous

Some attribute names can cause conflicts with existing methods on an object. For example, an attribute named “timeout” would conflict with the timeout method that Ruby’s Timeout library mixes into Object.

def dangerous_attribute?(name)
  attribute_methods(name).detect do |method_name|
    !DEPRECATED_OBJECT_METHODS.include?(method_name.to_s) && allocate.respond_to?(method_name, true)
  end unless attribute_names.include? name.to_s
end
#inspect

Returns the class name plus its attribute names

def inspect
  inspected_attributes = attribute_names.sort
  attributes_list = "(#{inspected_attributes.join(', ')})" unless inspected_attributes.empty?
  "#{name}#{attributes_list}"
end