module StoresInMongo::DocumentMethods
Public Instance Methods
changed?()
click to toggle source
Calls superclass method
# File lib/stores_in_mongo/document_methods.rb, line 42 def changed? @mongo_dirty || super end
deep_dup(*args)
click to toggle source
Calls superclass method
# File lib/stores_in_mongo/document_methods.rb, line 36 def deep_dup(*args) copy = super copy.mongo_document = mongo_document.deep_dup return copy end
mongo_class()
click to toggle source
# File lib/stores_in_mongo/document_methods.rb, line 11 def mongo_class if self.stores_in_mongo_options[:use_sessions] mongo_class_name.constantize.with(session: mongo_session) else mongo_class_name.constantize end end
mongo_class_column()
click to toggle source
# File lib/stores_in_mongo/document_methods.rb, line 23 def mongo_class_column self.stores_in_mongo_options[:polymorphic] && self.stores_in_mongo_options[:class_name] end
mongo_class_name()
click to toggle source
# File lib/stores_in_mongo/document_methods.rb, line 3 def mongo_class_name if self.stores_in_mongo_options[:polymorphic] self.public_send(mongo_class_column) or raise RuntimeError, "No mongo type specified in #{mongo_class_column} for #{self}! Initialize your model with a value or use a column default." else self.stores_in_mongo_options[:class_name] end end
mongo_key()
click to toggle source
# File lib/stores_in_mongo/document_methods.rb, line 19 def mongo_key self.public_send(mongo_key_column) end
mongo_key_column()
click to toggle source
# File lib/stores_in_mongo/document_methods.rb, line 27 def mongo_key_column stores_in_mongo_options[:foreign_key] end
reload(*args)
click to toggle source
Calls superclass method
# File lib/stores_in_mongo/document_methods.rb, line 31 def reload(*args) clear_mongo_cache super end
Protected Instance Methods
mongo_document=(mongo_document)
click to toggle source
# File lib/stores_in_mongo/document_methods.rb, line 48 def mongo_document=(mongo_document) # We can't easily determine in-place data modification, so always mark as dirty if data has been loaded # TODO: only mark as dirty if data has actually changed. Clear dirty on a fresh load. mark_mongo_owner_as_dirty @mongo_document = mongo_document set_mongo_document_id return mongo_document end
Private Instance Methods
clear_mongo_cache()
click to toggle source
# File lib/stores_in_mongo/document_methods.rb, line 73 def clear_mongo_cache @mongo_document = nil end
clear_mongo_owner_dirty()
click to toggle source
# File lib/stores_in_mongo/document_methods.rb, line 64 def clear_mongo_owner_dirty @mongo_dirty = false return true end
destroy_mongo_document()
click to toggle source
# File lib/stores_in_mongo/document_methods.rb, line 103 def destroy_mongo_document return true if !mongo_document_loaded? mongo_document.destroy end
fetch_mongo_document()
click to toggle source
# File lib/stores_in_mongo/document_methods.rb, line 88 def fetch_mongo_document mongo_class.where(id: mongo_key).first end
initialize_mongo_document()
click to toggle source
# File lib/stores_in_mongo/document_methods.rb, line 92 def initialize_mongo_document mongo_class.new end
mark_mongo_owner_as_dirty()
click to toggle source
# File lib/stores_in_mongo/document_methods.rb, line 59 def mark_mongo_owner_as_dirty @mongo_dirty = true return true end
mongo_document(reload = false)
click to toggle source
# File lib/stores_in_mongo/document_methods.rb, line 83 def mongo_document(reload = false) return @mongo_document if !reload && mongo_document_loaded? self.mongo_document = fetch_mongo_document || initialize_mongo_document end
mongo_document_loaded?()
click to toggle source
# File lib/stores_in_mongo/document_methods.rb, line 69 def mongo_document_loaded? @mongo_document.present? end
save_mongo_document()
click to toggle source
# File lib/stores_in_mongo/document_methods.rb, line 96 def save_mongo_document return true if !mongo_document_loaded? mongo_document.save! set_mongo_document_id return true end
set_mongo_document_id()
click to toggle source
# File lib/stores_in_mongo/document_methods.rb, line 77 def set_mongo_document_id assign_attributes(stores_in_mongo_options[:class_name] => mongo_document.class.name) if self.stores_in_mongo_options[:polymorphic] assign_attributes(stores_in_mongo_options[:foreign_key] => mongo_document.id) return mongo_key end