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
Documentattributes. -
#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 |