module Origin::Selectable
An origin selectable is selectable, in that it has the ability to select document from the database. The selectable module brings all functionality to the selectable that has to do with building MongoDB selectors.
Private Instance Methods
between(criterion = nil)
click to toggle source
# File lib/money/mongoid/3x/origin/selectable.rb, line 34 def between(criterion = nil) selection(criterion) do |selector, field, value| expr = custom_between?(field, value) ? custom_between(field, value) : { "$gte" => value.min, "$lte" => value.max } selector.store( field, expr ) end end
custom_between(name, value)
click to toggle source
# File lib/money/mongoid/3x/origin/selectable.rb, line 48 def custom_between(name, value) serializer = @serializers[name.to_s] raise RuntimeError, "No Serializer found for field #{name}" unless serializer serializer.type.custom_between(name, value, serializer.options) end
custom_between?(name, value)
click to toggle source
# File lib/money/mongoid/3x/origin/selectable.rb, line 43 def custom_between? name, value serializer = @serializers[name.to_s] serializer && serializer.type.respond_to?(:custom_between?) && serializer.type.custom_between?(name, value) end
custom_serialization?(name, operator)
click to toggle source
# File lib/money/mongoid/3x/origin/selectable.rb, line 55 def custom_serialization?(name, operator) serializer = @serializers[name.to_s] serializer && serializer.type.respond_to?(:custom_serialization?) && serializer.type.custom_serialization?(operator) end
custom_specify(name, operator, value)
click to toggle source
# File lib/money/mongoid/3x/origin/selectable.rb, line 60 def custom_specify(name, operator, value) serializer = @serializers[name.to_s] raise RuntimeError, "No Serializer found for field #{name}" unless serializer serializer.type.custom_specify(name, operator, value, serializer.options) end
expr_query(criterion)
click to toggle source
Create the standard expression query.
@api private
@example Create the selection.
selectable.expr_query(age: 50)
@param [ Hash ] criterion The field/value pairs.
@return [ Selectable
] The cloned selectable.
@since 1.0.0
# File lib/money/mongoid/3x/origin/selectable.rb, line 23 def expr_query(criterion) selection(criterion) do |selector, field, value| if (field.is_a? Key) && custom_serialization?(field.name, field.operator) specified = custom_specify(field.name, field.operator, value) else specified = field.specify(value.__expand_complex__, negating?) end selector.merge!(specified) end end