Class: ActiveRecord::Attribute
- Inherits:
-
Object
- Object
- ActiveRecord::Attribute
- Defined in:
- lib/active_record/attribute.rb
Overview
:nodoc:
Direct Known Subclasses
Defined Under Namespace
Classes: WithCastValue
Instance Attribute Summary collapse
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#type ⇒ Object
readonly
Returns the value of attribute type.
-
#value_before_type_cast ⇒ Object
readonly
Returns the value of attribute value_before_type_cast.
Class Method Summary collapse
- .from_database(name, value, type) ⇒ Object
- .from_user(name, value, type) ⇒ Object
- .null(name) ⇒ Object
- .uninitialized(name, type) ⇒ Object
- .with_cast_value(name, value, type) ⇒ Object
Instance Method Summary collapse
- #==(other) ⇒ Object
- #came_from_user? ⇒ Boolean
- #changed_from?(old_value) ⇒ Boolean
- #changed_in_place_from?(old_value) ⇒ Boolean
-
#initialize(name, value_before_type_cast, type) ⇒ Attribute
constructor
This method should not be called directly.
- #initialized? ⇒ Boolean
- #original_value ⇒ Object
- #type_cast ⇒ Object
- #value ⇒ Object
- #value_for_database ⇒ Object
- #with_cast_value(value) ⇒ Object
- #with_value_from_database(value) ⇒ Object
- #with_value_from_user(value) ⇒ Object
Constructor Details
#initialize(name, value_before_type_cast, type) ⇒ Attribute
This method should not be called directly. Use #from_database or #from_user
29 30 31 32 33 |
# File 'lib/active_record/attribute.rb', line 29 def initialize(name, value_before_type_cast, type) @name = name @value_before_type_cast = value_before_type_cast @type = type end |
Instance Attribute Details
#name ⇒ Object (readonly)
Returns the value of attribute name.
25 26 27 |
# File 'lib/active_record/attribute.rb', line 25 def name @name end |
#type ⇒ Object (readonly)
Returns the value of attribute type.
25 26 27 |
# File 'lib/active_record/attribute.rb', line 25 def type @type end |
#value_before_type_cast ⇒ Object (readonly)
Returns the value of attribute value_before_type_cast.
25 26 27 |
# File 'lib/active_record/attribute.rb', line 25 def value_before_type_cast @value_before_type_cast end |
Class Method Details
.from_database(name, value, type) ⇒ Object
4 5 6 |
# File 'lib/active_record/attribute.rb', line 4 def from_database(name, value, type) FromDatabase.new(name, value, type) end |
.from_user(name, value, type) ⇒ Object
8 9 10 |
# File 'lib/active_record/attribute.rb', line 8 def from_user(name, value, type) FromUser.new(name, value, type) end |
.null(name) ⇒ Object
16 17 18 |
# File 'lib/active_record/attribute.rb', line 16 def null(name) Null.new(name) end |
.uninitialized(name, type) ⇒ Object
20 21 22 |
# File 'lib/active_record/attribute.rb', line 20 def uninitialized(name, type) Uninitialized.new(name, type) end |
.with_cast_value(name, value, type) ⇒ Object
12 13 14 |
# File 'lib/active_record/attribute.rb', line 12 def with_cast_value(name, value, type) WithCastValue.new(name, value, type) end |
Instance Method Details
#==(other) ⇒ Object
81 82 83 84 85 86 |
# File 'lib/active_record/attribute.rb', line 81 def ==(other) self.class == other.class && name == other.name && value_before_type_cast == other.value_before_type_cast && type == other.type end |
#came_from_user? ⇒ Boolean
77 78 79 |
# File 'lib/active_record/attribute.rb', line 77 def came_from_user? false end |
#changed_from?(old_value) ⇒ Boolean
49 50 51 |
# File 'lib/active_record/attribute.rb', line 49 def changed_from?(old_value) type.changed?(old_value, value, value_before_type_cast) end |
#changed_in_place_from?(old_value) ⇒ Boolean
53 54 55 |
# File 'lib/active_record/attribute.rb', line 53 def changed_in_place_from?(old_value) has_been_read? && type.changed_in_place?(old_value, value) end |
#initialized? ⇒ Boolean
73 74 75 |
# File 'lib/active_record/attribute.rb', line 73 def initialized? true end |
#original_value ⇒ Object
41 42 43 |
# File 'lib/active_record/attribute.rb', line 41 def original_value type_cast(value_before_type_cast) end |
#type_cast ⇒ Object
69 70 71 |
# File 'lib/active_record/attribute.rb', line 69 def type_cast(*) raise NotImplementedError end |
#value ⇒ Object
35 36 37 38 39 |
# File 'lib/active_record/attribute.rb', line 35 def value # `defined?` is cheaper than `||=` when we get back falsy values @value = original_value unless defined?(@value) @value end |
#value_for_database ⇒ Object
45 46 47 |
# File 'lib/active_record/attribute.rb', line 45 def value_for_database type.type_cast_for_database(value) end |
#with_cast_value(value) ⇒ Object
65 66 67 |
# File 'lib/active_record/attribute.rb', line 65 def with_cast_value(value) self.class.with_cast_value(name, value, type) end |
#with_value_from_database(value) ⇒ Object
61 62 63 |
# File 'lib/active_record/attribute.rb', line 61 def with_value_from_database(value) self.class.from_database(name, value, type) end |
#with_value_from_user(value) ⇒ Object
57 58 59 |
# File 'lib/active_record/attribute.rb', line 57 def with_value_from_user(value) self.class.from_user(name, value, type) end |