Class: DataMapper::Query::Conditions::AbstractComparison
- Inherits:
-
Object
- Object
- DataMapper::Query::Conditions::AbstractComparison
- Extended by:
- Equalizer
- 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 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 primitive property 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. ++
153 154 155 |
# File 'lib/dm-core/query/conditions/comparison.rb', line 153 def loaded_value @loaded_value end |
#parent ⇒ Object
108 109 110 |
# File 'lib/dm-core/query/conditions/comparison.rb', line 108 def parent @parent end |
#subject ⇒ Property, Associations::Relationship (readonly)
The property or relationship which is being matched against
115 116 117 |
# File 'lib/dm-core/query/conditions/comparison.rb', line 115 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)
159 160 161 |
# File 'lib/dm-core/query/conditions/comparison.rb', line 159 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)
166 167 168 169 |
# File 'lib/dm-core/query/conditions/comparison.rb', line 166 def self.inherited(descendant) descendants << descendant super end |
.slug(slug = nil) ⇒ Symbol
Setter/getter: allows subclasses to easily set their slug
186 187 188 |
# File 'lib/dm-core/query/conditions/comparison.rb', line 186 def self.slug(slug = nil) slug ? @slug = slug : @slug end |
Instance Method Details
#inspect ⇒ String
Returns a human-readable representation of this object
252 253 254 255 |
# File 'lib/dm-core/query/conditions/comparison.rb', line 252 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
208 209 210 |
# File 'lib/dm-core/query/conditions/comparison.rb', line 208 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.
271 272 273 274 |
# File 'lib/dm-core/query/conditions/comparison.rb', line 271 def negated? parent = self.parent parent ? parent.negated? : false end |
#property? ⇒ Boolean
Returns whether the subject is a Property
243 244 245 |
# File 'lib/dm-core/query/conditions/comparison.rb', line 243 def property? subject.kind_of?(Property) end |
#relationship? ⇒ Boolean
Returns whether the subject is a Relationship
234 235 236 |
# File 'lib/dm-core/query/conditions/comparison.rb', line 234 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
196 197 198 |
# File 'lib/dm-core/query/conditions/comparison.rb', line 196 def slug self.class.slug end |
#to_s ⇒ String
Returns a string version of this Comparison object
266 267 268 |
# File 'lib/dm-core/query/conditions/comparison.rb', line 266 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.
225 226 227 |
# File 'lib/dm-core/query/conditions/comparison.rb', line 225 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 primitive property, this is the value as it is stored in the repository.
129 130 131 |
# File 'lib/dm-core/query/conditions/comparison.rb', line 129 def value dumped_value end |