Class: DataMapper::Query::Conditions::AbstractComparison
- Defined in:
- lib/dm-core/query/conditions/comparison.rb
Overview
A base class for the various comparison classes.
Direct Known Subclasses
EqualToComparison, GreaterThanComparison, GreaterThanOrEqualToComparison, InclusionComparison, LessThanComparison, LessThanOrEqualToComparison, LikeComparison, RegexpComparison
Instance Attribute Summary collapse
-
#loaded_value ⇒ Object
readonly
The loaded/typecast value.
- #parent ⇒ Object
-
#subject ⇒ Property, Associations::Relationship
readonly
The property or relationship which is being matched against.
Class Method Summary collapse
-
.descendants ⇒ Set<AbstractComparison>
private
Keeps track of AbstractComparison subclasses (used in Comparison).
-
.inherited(descendant) ⇒ Object
private
Registers AbstractComparison subclasses (used in Comparison).
-
.slug(slug = nil) ⇒ Symbol
Setter/getter: allows subclasses to easily set their slug.
Instance Method Summary collapse
-
#inspect ⇒ String
Returns a human-readable representation of this object.
-
#matches?(record) ⇒ Boolean
Test that the record value matches the comparison.
- #negated? ⇒ Boolean private
-
#property? ⇒ Boolean
Returns whether the subject is a Property.
-
#relationship? ⇒ Boolean
Returns whether the subject is a Relationship.
-
#slug ⇒ Symbol
private
Return the comparison class slug.
-
#to_s ⇒ String
Returns a string version of this Comparison object.
-
#valid? ⇒ Boolean
Tests that the Comparison is valid.
-
#value ⇒ Object
Value to be compared with the subject.
Methods included from Deprecate
Methods included from Equalizer
Instance Attribute Details
#loaded_value ⇒ Object (readonly)
The loaded/typecast value
In the case of primitive types, this will be the same as value
, however when using custom types this stores the loaded value.
If writing an adapter, you should use value
, while plugin authors should refer to loaded_value
.
– As an example, you might use symbols with the Enum type in dm-types
property :myprop, Enum[:open, :closed]
These are stored in repositories as 1 and 2, respectively. value
returns the 1 or 2, while loaded_value
returns the symbol. ++
156 157 158 |
# File 'lib/dm-core/query/conditions/comparison.rb', line 156 def loaded_value @loaded_value end |
#parent ⇒ Object
111 112 113 |
# File 'lib/dm-core/query/conditions/comparison.rb', line 111 def parent @parent end |
#subject ⇒ Property, Associations::Relationship (readonly)
The property or relationship which is being matched against
118 119 120 |
# File 'lib/dm-core/query/conditions/comparison.rb', line 118 def subject @subject end |
Class Method Details
.descendants ⇒ Set<AbstractComparison>
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Keeps track of AbstractComparison subclasses (used in Comparison)
162 163 164 |
# File 'lib/dm-core/query/conditions/comparison.rb', line 162 def self.descendants @descendants ||= DescendantSet.new end |
.inherited(descendant) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Registers AbstractComparison subclasses (used in Comparison)
169 170 171 |
# File 'lib/dm-core/query/conditions/comparison.rb', line 169 def self.inherited(descendant) descendants << descendant end |
.slug(slug = nil) ⇒ Symbol
Setter/getter: allows subclasses to easily set their slug
188 189 190 |
# File 'lib/dm-core/query/conditions/comparison.rb', line 188 def self.slug(slug = nil) slug ? @slug = slug : @slug end |
Instance Method Details
#inspect ⇒ String
Returns a human-readable representation of this object
254 255 256 257 |
# File 'lib/dm-core/query/conditions/comparison.rb', line 254 def inspect "#<#{self.class} @subject=#{@subject.inspect} " \ "@dumped_value=#{@dumped_value.inspect} @loaded_value=#{@loaded_value.inspect}>" end |
#matches?(record) ⇒ Boolean
Test that the record value matches the comparison
210 211 212 |
# File 'lib/dm-core/query/conditions/comparison.rb', line 210 def matches?(record) match_property?(record) end |
#negated? ⇒ Boolean
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
273 274 275 276 |
# File 'lib/dm-core/query/conditions/comparison.rb', line 273 def negated? parent = self.parent parent ? parent.negated? : false end |
#property? ⇒ Boolean
Returns whether the subject is a Property
245 246 247 |
# File 'lib/dm-core/query/conditions/comparison.rb', line 245 def property? subject.kind_of?(Property) end |
#relationship? ⇒ Boolean
Returns whether the subject is a Relationship
236 237 238 |
# File 'lib/dm-core/query/conditions/comparison.rb', line 236 def relationship? false end |
#slug ⇒ Symbol
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Return the comparison class slug
198 199 200 |
# File 'lib/dm-core/query/conditions/comparison.rb', line 198 def slug self.class.slug end |
#to_s ⇒ String
Returns a string version of this Comparison object
268 269 270 |
# File 'lib/dm-core/query/conditions/comparison.rb', line 268 def to_s "#{subject.name} #{comparator_string} #{dumped_value.inspect}" end |
#valid? ⇒ Boolean
Tests that the Comparison is valid
Subclasses can overload this to customise the means by which they determine the validity of the comparison. #valid? is called prior to performing a query on the repository: each Comparison within a Query must be valid otherwise the query will not be performed.
227 228 229 |
# File 'lib/dm-core/query/conditions/comparison.rb', line 227 def valid? valid_for_subject?(loaded_value) end |
#value ⇒ Object
Value to be compared with the subject
This value is compared against that contained in the subject when filtering collections, or the value in the repository when performing queries.
In the case of custom types, this is the value as it is stored in the repository.
132 133 134 |
# File 'lib/dm-core/query/conditions/comparison.rb', line 132 def value dumped_value end |