Class: ActiveRecord::Relation::QueryAttribute
Overview
Instance Attribute Summary
#name, #type, #value_before_type_cast
Instance Method Summary
collapse
#came_from_user?, #changed?, #changed_in_place?, #encode_with, #forgetting_assignment, from_database, from_user, #has_been_read?, #init_with, #initialized?, null, #original_value, #original_value_for_database, #serializable?, uninitialized, #value, with_cast_value, #with_type, #with_user_default, #with_value_from_database, #with_value_from_user
Constructor Details
Returns a new instance of QueryAttribute.
8
9
10
11
12
13
14
15
16
17
18
19
20
|
# File 'activerecord/lib/active_record/relation/query_attribute.rb', line 8
def initialize(...)
super
if value_before_type_cast.is_a?(StatementCache::Substitute)
elsif @type.serialized?
value_for_database
elsif @type.mutable?
@value_before_type_cast = @value_before_type_cast.deep_dup
end
end
|
Instance Method Details
#==(other) ⇒ Object
Also known as:
eql?
53
54
55
|
# File 'activerecord/lib/active_record/relation/query_attribute.rb', line 53
def ==(other)
super && value_for_database == other.value_for_database
end
|
58
59
60
|
# File 'activerecord/lib/active_record/relation/query_attribute.rb', line 58
def hash
[self.class, name, value_for_database, type].hash
end
|
#infinite? ⇒ Boolean
42
43
44
|
# File 'activerecord/lib/active_record/relation/query_attribute.rb', line 42
def infinite?
infinity?(value_before_type_cast) || serializable? && infinity?(value_for_database)
end
|
#nil? ⇒ Boolean
35
36
37
38
39
40
|
# File 'activerecord/lib/active_record/relation/query_attribute.rb', line 35
def nil?
unless value_before_type_cast.is_a?(StatementCache::Substitute)
value_before_type_cast.nil? ||
(type.respond_to?(:subtype) || type.respond_to?(:normalizer)) && serializable? && value_for_database.nil?
end
end
|
#type_cast(value) ⇒ Object
22
23
24
|
# File 'activerecord/lib/active_record/relation/query_attribute.rb', line 22
def type_cast(value)
value
end
|
#unboundable? ⇒ Boolean
46
47
48
49
50
51
|
# File 'activerecord/lib/active_record/relation/query_attribute.rb', line 46
def unboundable?
unless defined?(@_unboundable)
serializable? { |value| @_unboundable = value <=> 0 } && @_unboundable = nil
end
@_unboundable
end
|
#value_for_database ⇒ Object
26
27
28
29
|
# File 'activerecord/lib/active_record/relation/query_attribute.rb', line 26
def value_for_database
@value_for_database = _value_for_database unless defined?(@value_for_database)
@value_for_database
end
|
#with_cast_value(value) ⇒ Object
31
32
33
|
# File 'activerecord/lib/active_record/relation/query_attribute.rb', line 31
def with_cast_value(value)
QueryAttribute.new(name, value, type)
end
|