Class: ActiveOrient::Model
- Extended by:
- CustomClass, ModelClass
- Includes:
- BaseProperties, ModelRecord
- Defined in:
- lib/model/model.rb
Constant Summary
Constants included from OrientDB
OrientDB::DocumentDatabase, OrientDB::DocumentDatabasePool, OrientDB::DocumentDatabasePooled, OrientDB::GraphDatabase, OrientDB::IndexType, OrientDB::OClassImpl, OrientDB::OTraverse, OrientDB::PropertyImpl, OrientDB::RemoteStorage, OrientDB::SQLCommand, OrientDB::SQLSynchQuery, OrientDB::Schema, OrientDB::SchemaProxy, OrientDB::SchemaType, OrientDB::ServerAdmin, OrientDB::User, OrientDB::UsingJava
Class Attribute Summary collapse
-
.abstract ⇒ Object
Returns the value of attribute abstract.
-
.ref_name ⇒ Object
Returns the value of attribute ref_name.
Instance Attribute Summary collapse
-
#metadata ⇒ Object
readonly
Used to read the metadata.
Class Method Summary collapse
-
._to_partial_path ⇒ Object
:nodoc:.
-
.autoload_object(rid) ⇒ Object
Either retrieves the object from the rid_store or loads it from the DB.
-
.delete_class(what = :all) ⇒ Object
Deletes the database class and removes the ruby-class.
- .to_or ⇒ Object
-
.use_or_allocate(rid) ⇒ Object
Based on the parameter rid (as “#a:b” or “a:b”) the cached value is used if found.
Instance Method Summary collapse
-
#document ⇒ Object
:nodoc:.
-
#persisted? ⇒ Boolean
used for active-model-compatibility.
-
#to_ary ⇒ Object
to prevent errors when calling to_a.
Methods included from CustomClass
Methods included from ModelClass
add_edge_link, all, alter_property, classname, count, create, create_class, create_index, create_properties, create_property, delete_property, delete_record, delete_records, first, get, get_records, indexes, last, link_list, migrate_property, namespace_prefix, naming_convention, orientdb_class, print_properties, properties, query, query_database, require_model_file, update, update!, upsert, where
Methods included from OrientSupport::Support
#as, #compose_where, #generate_sql_list, #where, #while_s
Methods included from ModelRecord
classname, #delete, #find, #from_orient, #has_property?, #is_edge?, #method_missing, #properties, #query, #reload!, #rid, #rrid, #save, #to_or, #to_s, #transfer_content, #update, #update_attribute, #update_attributes, #version
Methods included from BaseProperties
#==, #content_attributes, #default_attributes, #embedded, #set_attribute_defaults, #to_human, #update_missing
Methods inherited from Base
#[], #[]=, attr_accessible, attr_protected, #attributes, #attributes=, belongs_to, display_rid, exclude_the_following_properties, get_rid, has_many, has_one, #included_links, #initialize, #my_metadata, remove_rid, reset_rid_store, serialize, store_rid, #to_model, #update_attribute
Methods included from Conversions
#to_key, #to_param, #to_partial_path
Constructor Details
This class inherits a constructor from ActiveOrient::Base
Dynamic Method Handling
This class handles dynamic methods through the method_missing method in the class ModelRecord
Class Attribute Details
.abstract ⇒ Object
Returns the value of attribute abstract.
125 126 127 |
# File 'lib/model/model.rb', line 125 def abstract @abstract end |
.ref_name ⇒ Object
Returns the value of attribute ref_name.
124 125 126 |
# File 'lib/model/model.rb', line 124 def ref_name @ref_name end |
Instance Attribute Details
#metadata ⇒ Object (readonly)
Used to read the metadata
119 120 121 |
# File 'lib/model/model.rb', line 119 def @metadata end |
Class Method Details
._to_partial_path ⇒ Object
:nodoc:
68 69 70 71 72 73 74 |
# File 'lib/model/model.rb', line 68 def self._to_partial_path #:nodoc: @_to_partial_path ||= begin element = ActiveSupport::Inflector.underscore(ActiveSupport::Inflector.demodulize(name)) collection = ActiveSupport::Inflector.tableize(name) "#{collection}/#{element}".freeze end end |
.autoload_object(rid) ⇒ Object
Either retrieves the object from the rid_store or loads it from the DB.
Example:
ActiveOrient::Model.autoload_object "#00:00"
The rid_store is updated!
Todo: fetch for version in the db and load the object only if a change is detected
Note: This function is not located in ModelClass since it needs to use @@rid_store
26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/model/model.rb', line 26 def self.autoload_object rid rid = rid[1..-1] if rid[0]=='#' if rid.rid? if @@rid_store[rid].present? @@rid_store[rid] # return_value else get(rid) end else logger.progname = "ActiveOrient::Model#AutoloadObject" logger.info{"#{rid} is not a valid rid."} end end |
.delete_class(what = :all) ⇒ Object
Deletes the database class and removes the ruby-class
87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
# File 'lib/model/model.rb', line 87 def self.delete_class what= :all orientdb.delete_class( self ) if what == :all # remove the database-class ## namespace is defined in config/boot ns = namespace.to_s == 'Object' ? "" : namespace.to_s ns_found = -> ( a_class ) do to_compare = a_class.to_s.split(':') if ns == "" && to_compare.size == 1 true elsif to_compare.first == ns true else false end end self.allocated_classes.delete_if{|x,y| x == self.ref_name && ns_found[y]} if allocated_classes.is_a?(Hash) namespace.send(:remove_const, naming_convention.to_sym) if namespace &.send( :const_defined?, naming_convention) end |
.to_or ⇒ Object
127 128 129 |
# File 'lib/model/model.rb', line 127 def to_or ref_name.to_or end |
.use_or_allocate(rid) ⇒ Object
Based on the parameter rid (as “#a:b” or “a:b”) the cached value is used if found. Otherwise the provided Block is executed, which is responsible for the allocation of a new dataset
i.e.
ActiveOrient::Model.use_or_allocated my_rid do
ActiveOrient::Model.orientdb_class(name: raw_data['@class']).new raw_data
end
58 59 60 61 62 63 64 65 |
# File 'lib/model/model.rb', line 58 def self.use_or_allocate rid cached_obj = get_rid( rid ) if cached_obj.present? cached_obj else yield end end |
Instance Method Details
#document ⇒ Object
:nodoc:
80 81 82 |
# File 'lib/model/model.rb', line 80 def document # :nodoc: @d end |
#persisted? ⇒ Boolean
used for active-model-compatibility
41 42 43 |
# File 'lib/model/model.rb', line 41 def persisted? true end |
#to_ary ⇒ Object
to prevent errors when calling to_a
76 77 78 |
# File 'lib/model/model.rb', line 76 def to_ary # :nodoc: attributes.to_a end |