Module: ActiveType::VirtualAttributes
- Extended by:
- ActiveSupport::Concern
- Included in:
- Object, Record
- Defined in:
- lib/active_type/virtual_attributes.rb
Defined Under Namespace
Modules: ClassMethods
Classes: AccessorGenerator, VirtualColumn
Instance Method Summary
collapse
Instance Method Details
104
105
106
107
108
109
110
|
# File 'lib/active_type/virtual_attributes.rb', line 104
def [](name)
if self.singleton_class._has_virtual_column?(name)
read_virtual_attribute(name)
else
super
end
end
|
#[]=(name, value) ⇒ Object
112
113
114
115
116
117
118
|
# File 'lib/active_type/virtual_attributes.rb', line 112
def []=(name, value)
if self.singleton_class._has_virtual_column?(name)
write_virtual_attribute(name, value)
else
super
end
end
|
#attributes ⇒ Object
120
121
122
123
124
|
# File 'lib/active_type/virtual_attributes.rb', line 120
def attributes
self.class._virtual_column_names.each_with_object(super) do |name, attrs|
attrs[name] = read_virtual_attribute(name)
end
end
|
#initialize ⇒ Object
98
99
100
101
102
|
# File 'lib/active_type/virtual_attributes.rb', line 98
def initialize(*)
@virtual_attributes = {}
@virtual_attributes_cache = {}
super
end
|
#read_virtual_attribute(name) ⇒ Object
126
127
128
129
130
131
|
# File 'lib/active_type/virtual_attributes.rb', line 126
def read_virtual_attribute(name)
name = name.to_s
@virtual_attributes_cache[name] ||= begin
self.singleton_class._virtual_column(name).type_cast(@virtual_attributes[name])
end
end
|
#write_virtual_attribute(name, value) ⇒ Object
133
134
135
136
137
|
# File 'lib/active_type/virtual_attributes.rb', line 133
def write_virtual_attribute(name, value)
name = name.to_s
@virtual_attributes_cache.delete(name)
@virtual_attributes[name] = value
end
|