Module: ActiveData::Model::Attributes
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/active_data/model/attributes.rb,
lib/active_data/model/attributes/base.rb,
lib/active_data/model/attributes/attribute.rb,
lib/active_data/model/attributes/localized.rb,
lib/active_data/model/attributes/collection.rb,
lib/active_data/model/attributes/dictionary.rb,
lib/active_data/model/attributes/represents.rb,
lib/active_data/model/attributes/reference_one.rb,
lib/active_data/model/attributes/reference_many.rb,
lib/active_data/model/attributes/reflections/base.rb,
lib/active_data/model/attributes/reflections/attribute.rb,
lib/active_data/model/attributes/reflections/localized.rb,
lib/active_data/model/attributes/reflections/collection.rb,
lib/active_data/model/attributes/reflections/dictionary.rb,
lib/active_data/model/attributes/reflections/represents.rb,
lib/active_data/model/attributes/reflections/reference_one.rb,
lib/active_data/model/attributes/reflections/reference_many.rb
Defined Under Namespace
Modules: ClassMethods, Reflections
Classes: Attribute, Base, Collection, Dictionary, Localized, ReferenceMany, ReferenceOne, Represents
Instance Method Summary
collapse
Instance Method Details
#==(other) ⇒ Object
Also known as:
eql?
146
147
148
|
# File 'lib/active_data/model/attributes.rb', line 146
def == other
super || other.instance_of?(self.class) && other.attributes(false) == attributes(false)
end
|
#assign_attributes(attrs) ⇒ Object
Also known as:
attributes=
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
|
# File 'lib/active_data/model/attributes.rb', line 185
def assign_attributes attrs
if self.class.represented_attributes.present? ||
(self.class.is_a?(ActiveData::Model::Associations::NestedAttributes) &&
self.class.nested_attributes_options.present?)
attrs.stringify_keys!
represented_attrs = self.class.represented_names_and_aliases
.each_with_object({}) do |name, result|
result[name] = attrs.delete(name) if attrs.has_key?(name)
end
if self.class.is_a?(ActiveData::Model::Associations::NestedAttributes)
nested_attrs = self.class.nested_attributes_options.keys
.each_with_object({}) do |association_name, result|
name = "#{association_name}_attributes"
result[name] = attrs.delete(name) if attrs.has_key?(name)
end
end
_assign_attributes(attrs)
_assign_attributes(represented_attrs)
_assign_attributes(nested_attrs) if nested_attrs
else
_assign_attributes(attrs)
end
true
end
|
#attribute(name) ⇒ Object
151
152
153
154
155
156
|
# File 'lib/active_data/model/attributes.rb', line 151
def attribute(name)
if reflection = self.class.reflect_on_attribute(name)
(@_attributes ||= {})[reflection.name] ||= reflection
.build_attribute(self, @initial_attributes.try(:[], reflection.name))
end
end
|
#attribute_present?(name) ⇒ Boolean
172
173
174
|
# File 'lib/active_data/model/attributes.rb', line 172
def attribute_present? name
attribute(name).value_present?
end
|
#attributes(include_associations = true) ⇒ Object
176
177
178
|
# File 'lib/active_data/model/attributes.rb', line 176
def attributes(include_associations = true)
Hash[attribute_names(include_associations).map { |name| [name, read_attribute(name)] }]
end
|
#initialize(attrs = {}) ⇒ Object
142
143
144
|
# File 'lib/active_data/model/attributes.rb', line 142
def initialize attrs = {}
assign_attributes attrs
end
|
#initialize_copy(_) ⇒ Object
216
217
218
219
220
221
222
|
# File 'lib/active_data/model/attributes.rb', line 216
def initialize_copy _
@initial_attributes = Hash[attribute_names.map do |name|
[name, read_attribute_before_type_cast(name)]
end]
@_attributes = nil
super
end
|
#inspect ⇒ Object
212
213
214
|
# File 'lib/active_data/model/attributes.rb', line 212
def inspect
"#<#{self.class.send(:original_inspect)} #{attributes_for_inspect.presence || '(no attributes)'}>"
end
|
#read_attribute(name) ⇒ Object
Also known as:
[]
163
164
165
|
# File 'lib/active_data/model/attributes.rb', line 163
def read_attribute name
attribute(name).read
end
|
#read_attribute_before_type_cast(name) ⇒ Object
168
169
170
|
# File 'lib/active_data/model/attributes.rb', line 168
def read_attribute_before_type_cast name
attribute(name).read_before_type_cast
end
|
#update(attrs) ⇒ Object
Also known as:
update_attributes
180
181
182
|
# File 'lib/active_data/model/attributes.rb', line 180
def update attrs
assign_attributes(attrs)
end
|
#write_attribute(name, value) ⇒ Object
Also known as:
[]=
158
159
160
|
# File 'lib/active_data/model/attributes.rb', line 158
def write_attribute name, value
attribute(name).write(value)
end
|