Module: Mongoid::Attributes
- Includes:
- Processing
- Included in:
- Components
- Defined in:
- lib/mongoid/attributes.rb,
lib/mongoid/attributes/processing.rb
Overview
:nodoc:
Defined Under Namespace
Modules: Processing
Instance Attribute Summary collapse
-
#attributes ⇒ Object
(also: #raw_attributes)
readonly
Returns the value of attribute attributes.
Instance Method Summary collapse
-
#attribute_present?(name) ⇒ true, false
Determine if an attribute is present.
-
#read_attribute(name) ⇒ Object
(also: #[])
Read a value from the document attributes.
-
#remove_attribute(name) ⇒ Object
Remove a value from the
Document
attributes. -
#respond_to?(*args) ⇒ true, false
Override respond_to? so it responds properly for dynamic attributes.
-
#write_attribute(name, value) ⇒ Object
(also: #[]=)
Write a single attribute to the document attribute hash.
-
#write_attributes(attrs = nil, guard_protected_attributes = true) ⇒ Object
(also: #attributes=)
Writes the supplied attributes hash to the document.
Methods included from Processing
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(name, *args) ⇒ Object (protected)
Used for allowing accessor methods for dynamic attributes.
160 161 162 163 164 165 166 167 168 |
# File 'lib/mongoid/attributes.rb', line 160 def method_missing(name, *args) attr = name.to_s return super unless attributes.has_key?(attr.reader) if attr.writer? write_attribute(attr.reader, (args.size > 1) ? args : args.first) else read_attribute(attr.reader) end end |
Instance Attribute Details
#attributes ⇒ Object (readonly) Also known as: raw_attributes
Returns the value of attribute attributes.
11 12 13 |
# File 'lib/mongoid/attributes.rb', line 11 def attributes @attributes end |
Instance Method Details
#attribute_present?(name) ⇒ true, false
Determine if an attribute is present.
24 25 26 |
# File 'lib/mongoid/attributes.rb', line 24 def attribute_present?(name) !read_attribute(name).blank? end |
#read_attribute(name) ⇒ Object Also known as: []
Read a value from the document attributes. If the value does not exist it will return nil.
42 43 44 45 46 |
# File 'lib/mongoid/attributes.rb', line 42 def read_attribute(name) access = name.to_s value = attributes[access] accessed(access, value) end |
#remove_attribute(name) ⇒ Object
Remove a value from the Document
attributes. If the value does not exist it will fail gracefully.
58 59 60 61 |
# File 'lib/mongoid/attributes.rb', line 58 def remove_attribute(name) access = name.to_s modify(access, attributes.delete(access), nil) end |
#respond_to?(*args) ⇒ true, false
Override respond_to? so it responds properly for dynamic attributes.
73 74 75 76 77 78 |
# File 'lib/mongoid/attributes.rb', line 73 def respond_to?(*args) (Mongoid.allow_dynamic_fields && attributes && attributes.has_key?(args.first.to_s) ) || super end |
#write_attribute(name, value) ⇒ Object Also known as: []=
Write a single attribute to the document attribute hash. This will also fire the before and after update callbacks, and perform any necessary typecasting.
94 95 96 97 |
# File 'lib/mongoid/attributes.rb', line 94 def write_attribute(name, value) access = name.to_s modify(access, attributes[access], typed_value_for(access, value)) end |
#write_attributes(attrs = nil, guard_protected_attributes = true) ⇒ Object Also known as: attributes=
Writes the supplied attributes hash to the document. This will only overwrite existing attributes if they are present in the new Hash
, all others will be preserved.
114 115 116 117 118 |
# File 'lib/mongoid/attributes.rb', line 114 def write_attributes(attrs = nil, guard_protected_attributes = true) process(attrs, guard_protected_attributes) do |document| document.identify if new? && id.blank? end end |