Class: ActiveRecord::AttributeSet
- Inherits:
-
Object
- Object
- ActiveRecord::AttributeSet
- Defined in:
- lib/active_record/attribute_set.rb,
lib/active_record/attribute_set/builder.rb
Overview
:nodoc:
Defined Under Namespace
Classes: Builder
Instance Method Summary collapse
- #==(other) ⇒ Object
- #[](name) ⇒ Object
- #[]=(name, value) ⇒ Object
- #accessed ⇒ Object
- #deep_dup ⇒ Object
-
#fetch_value(name) ⇒ Object
This form is significantly faster on JRuby, and this is one of our biggest hotspots.
- #freeze ⇒ Object
-
#initialize(attributes) ⇒ AttributeSet
constructor
A new instance of AttributeSet.
- #initialize_clone(_) ⇒ Object
- #initialize_dup(_) ⇒ Object
- #key?(name) ⇒ Boolean
- #keys ⇒ Object
- #map(&block) ⇒ Object
- #reset(key) ⇒ Object
- #to_hash ⇒ Object (also: #to_h)
- #values_before_type_cast ⇒ Object
- #write_cast_value(name, value) ⇒ Object
- #write_from_database(name, value) ⇒ Object
- #write_from_user(name, value) ⇒ Object
Constructor Details
#initialize(attributes) ⇒ AttributeSet
Returns a new instance of AttributeSet.
7 8 9 |
# File 'lib/active_record/attribute_set.rb', line 7 def initialize(attributes) @attributes = attributes end |
Instance Method Details
#==(other) ⇒ Object
96 97 98 |
# File 'lib/active_record/attribute_set.rb', line 96 def ==(other) attributes == other.attributes end |
#[](name) ⇒ Object
11 12 13 |
# File 'lib/active_record/attribute_set.rb', line 11 def [](name) attributes[name] || Attribute.null(name) end |
#[]=(name, value) ⇒ Object
15 16 17 |
# File 'lib/active_record/attribute_set.rb', line 15 def []=(name, value) attributes[name] = value end |
#accessed ⇒ Object
87 88 89 |
# File 'lib/active_record/attribute_set.rb', line 87 def accessed attributes.select { |_, attr| attr.has_been_read? }.keys end |
#deep_dup ⇒ Object
65 66 67 68 69 |
# File 'lib/active_record/attribute_set.rb', line 65 def deep_dup dup.tap do |copy| copy.instance_variable_set(:@attributes, attributes.deep_dup) end end |
#fetch_value(name) ⇒ Object
This form is significantly faster on JRuby, and this is one of our biggest hotspots. github.com/jruby/jruby/pull/2562
39 40 41 |
# File 'lib/active_record/attribute_set.rb', line 39 def fetch_value(name, &block) self[name].value(&block) end |
#freeze ⇒ Object
60 61 62 63 |
# File 'lib/active_record/attribute_set.rb', line 60 def freeze @attributes.freeze super end |
#initialize_clone(_) ⇒ Object
76 77 78 79 |
# File 'lib/active_record/attribute_set.rb', line 76 def initialize_clone(_) @attributes = attributes.clone super end |
#initialize_dup(_) ⇒ Object
71 72 73 74 |
# File 'lib/active_record/attribute_set.rb', line 71 def initialize_dup(_) @attributes = attributes.dup super end |
#key?(name) ⇒ Boolean
28 29 30 |
# File 'lib/active_record/attribute_set.rb', line 28 def key?(name) attributes.key?(name) && self[name].initialized? end |
#keys ⇒ Object
32 33 34 |
# File 'lib/active_record/attribute_set.rb', line 32 def keys attributes.each_key.select { |name| self[name].initialized? } end |
#map(&block) ⇒ Object
91 92 93 94 |
# File 'lib/active_record/attribute_set.rb', line 91 def map(&block) new_attributes = attributes.transform_values(&block) AttributeSet.new(new_attributes) end |
#reset(key) ⇒ Object
81 82 83 84 85 |
# File 'lib/active_record/attribute_set.rb', line 81 def reset(key) if key?(key) write_from_database(key, nil) end end |
#to_hash ⇒ Object Also known as: to_h
23 24 25 |
# File 'lib/active_record/attribute_set.rb', line 23 def to_hash initialized_attributes.transform_values(&:value) end |
#values_before_type_cast ⇒ Object
19 20 21 |
# File 'lib/active_record/attribute_set.rb', line 19 def values_before_type_cast attributes.transform_values(&:value_before_type_cast) end |
#write_cast_value(name, value) ⇒ Object
56 57 58 |
# File 'lib/active_record/attribute_set.rb', line 56 def write_cast_value(name, value) attributes[name] = self[name].with_cast_value(value) end |
#write_from_database(name, value) ⇒ Object
48 49 50 |
# File 'lib/active_record/attribute_set.rb', line 48 def write_from_database(name, value) attributes[name] = self[name].with_value_from_database(value) end |
#write_from_user(name, value) ⇒ Object
52 53 54 |
# File 'lib/active_record/attribute_set.rb', line 52 def write_from_user(name, value) attributes[name] = self[name].with_value_from_user(value) end |