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?
117
118
119
|
# File 'lib/active_data/model/attributes.rb', line 117
def ==(other)
super || other.instance_of?(self.class) && other.attributes(false) == attributes(false)
end
|
#assign_attributes(attrs) ⇒ Object
Also known as:
attributes=
161
162
163
164
165
166
167
168
169
170
171
172
|
# File 'lib/active_data/model/attributes.rb', line 161
def assign_attributes(attrs)
attrs.each do |name, value|
name = name.to_s
sanitize_value = self.class._sanitize && name == self.class.primary_name
if respond_to?("#{name}=") && !sanitize_value
public_send("#{name}=", value)
else
logger.info("Ignoring #{sanitize_value ? 'primary' : 'undefined'} `#{name}` attribute value for #{self} during mass-assignment")
end
end
end
|
#attribute(name) ⇒ Object
122
123
124
125
126
127
128
|
# File 'lib/active_data/model/attributes.rb', line 122
def attribute(name)
reflection = self.class.reflect_on_attribute(name)
return unless reflection
initial_value = @initial_attributes.to_h.fetch(reflection.name, ActiveData::UNDEFINED)
@_attributes ||= {}
@_attributes[reflection.name] ||= reflection.build_attribute(self, initial_value)
end
|
#attribute_came_from_user?(name) ⇒ Boolean
144
145
146
|
# File 'lib/active_data/model/attributes.rb', line 144
def attribute_came_from_user?(name)
attribute(name).came_from_user?
end
|
#attribute_present?(name) ⇒ Boolean
148
149
150
|
# File 'lib/active_data/model/attributes.rb', line 148
def attribute_present?(name)
attribute(name).value_present?
end
|
#attributes(include_associations = true) ⇒ Object
152
153
154
|
# File 'lib/active_data/model/attributes.rb', line 152
def attributes(include_associations = true)
Hash[attribute_names(include_associations).map { |name| [name, read_attribute(name)] }]
end
|
#initialize(attrs = {}) ⇒ Object
113
114
115
|
# File 'lib/active_data/model/attributes.rb', line 113
def initialize(attrs = {})
assign_attributes attrs
end
|
#initialize_copy(_) ⇒ Object
179
180
181
182
183
184
185
|
# File 'lib/active_data/model/attributes.rb', line 179
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
175
176
177
|
# File 'lib/active_data/model/attributes.rb', line 175
def inspect
"#<#{self.class.send(:original_inspect)} #{attributes_for_inspect.presence || '(no attributes)'}>"
end
|
#read_attribute(name) ⇒ Object
Also known as:
[]
135
136
137
|
# File 'lib/active_data/model/attributes.rb', line 135
def read_attribute(name)
attribute(name).read
end
|
#read_attribute_before_type_cast(name) ⇒ Object
140
141
142
|
# File 'lib/active_data/model/attributes.rb', line 140
def read_attribute_before_type_cast(name)
attribute(name).read_before_type_cast
end
|
#update(attrs) ⇒ Object
Also known as:
update_attributes
156
157
158
|
# File 'lib/active_data/model/attributes.rb', line 156
def update(attrs)
assign_attributes(attrs)
end
|
#write_attribute(name, value) ⇒ Object
Also known as:
[]=
130
131
132
|
# File 'lib/active_data/model/attributes.rb', line 130
def write_attribute(name, value)
attribute(name).write(value)
end
|