class Garner::Mixins::Mongoid::Identity
Attributes
conditions[RW]
handle[RW]
klass[RW]
proxy_binding[RW]
Public Class Methods
conditions_for(klass, handle)
click to toggle source
# File lib/garner/mixins/mongoid/identity.rb, line 52 def self.conditions_for(klass, handle) # Multiple-ID conditions conditions = { '$or' => Garner.config.mongoid_identity_fields.map do |field| { field => handle } end } # _type conditions selector = klass.where({}) conditions.merge!(selector.send(:type_selection)) if selector.send(:type_selectable?) conditions end
from_class_and_handle(klass, handle)
click to toggle source
Instantiate a new Mongoid::Identity
.
@param klass [Class] A @param handle [Object] A String, Fixnum, BSON::ObjectId, etc.
identifying the object.
@return [Garner::Mixins::Mongoid::Identity]
# File lib/garner/mixins/mongoid/identity.rb, line 15 def self.from_class_and_handle(klass, handle) validate_class!(klass) new.tap do |identity| identity.klass = klass identity.handle = handle identity.conditions = conditions_for(klass, handle) end end
new()
click to toggle source
# File lib/garner/mixins/mongoid/identity.rb, line 25 def initialize @conditions = {} end
validate_class!(klass)
click to toggle source
# File lib/garner/mixins/mongoid/identity.rb, line 44 def self.validate_class!(klass) if !klass.include?(::Mongoid::Document) fail 'Must instantiate from a Mongoid class' elsif klass.embedded? fail 'Cannot instantiate from an embedded document class' end end
Public Instance Methods
to_s()
click to toggle source
Stringize this identity for purposes of marshaling.
@return [String]
# File lib/garner/mixins/mongoid/identity.rb, line 40 def to_s "#{self.class.name}/klass=#{klass},handle=#{handle}" end