Module: MongoModel::Attributes
- Extended by:
- ActiveSupport::Concern
- Included in:
- EmbeddedDocument
- Defined in:
- lib/mongomodel.rb,
lib/mongomodel/attributes/mongo.rb,
lib/mongomodel/attributes/store.rb,
lib/mongomodel/concerns/attributes.rb,
lib/mongomodel/attributes/typecasting.rb
Defined Under Namespace
Modules: ClassMethods, Mongo, Typecasting
Classes: Store
Instance Method Summary
collapse
Instance Method Details
#assign_attributes(attrs, options = {}) ⇒ Object
16
17
18
19
20
21
22
23
24
25
26
|
# File 'lib/mongomodel/concerns/attributes.rb', line 16
def assign_attributes(attrs, options={})
return unless attrs
attrs.each do |attr, value|
if respond_to?("#{attr}=")
send("#{attr}=", value)
else
write_attribute(attr, value)
end
end
end
|
#attributes ⇒ Object
12
13
14
|
# File 'lib/mongomodel/concerns/attributes.rb', line 12
def attributes
@attributes ||= Attributes::Store.new(self)
end
|
#attributes=(attrs) ⇒ Object
28
29
30
|
# File 'lib/mongomodel/concerns/attributes.rb', line 28
def attributes=(attrs)
assign_attributes(attrs)
end
|
#dup ⇒ Object
Returns duplicated record with unfreezed attributes.
41
42
43
44
45
|
# File 'lib/mongomodel/concerns/attributes.rb', line 41
def dup
obj = super
obj.instance_variable_set('@attributes', instance_variable_get('@attributes').dup)
obj
end
|
#embedded_documents ⇒ Object
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
# File 'lib/mongomodel/concerns/attributes.rb', line 51
def embedded_documents
docs = []
docs.concat attributes.values.select { |attr| attr.is_a?(EmbeddedDocument) }
attributes.values.select { |attr| attr.is_a?(Collection) }.each do |collection|
docs.concat collection.embedded_documents
end
attributes.values.select { |attr| attr.is_a?(Map) && attr.to <= EmbeddedDocument }.each do |map|
docs.concat map.values
end
docs
end
|
#freeze ⇒ Object
32
33
34
|
# File 'lib/mongomodel/concerns/attributes.rb', line 32
def freeze
attributes.freeze; self
end
|
36
37
38
|
# File 'lib/mongomodel/concerns/attributes.rb', line 36
def frozen?
attributes.frozen?
end
|
#initialize(attrs = {}, options = {}) {|_self| ... } ⇒ Object
7
8
9
10
|
# File 'lib/mongomodel/concerns/attributes.rb', line 7
def initialize(attrs={}, options={})
assign_attributes(attrs || {}, options)
yield self if block_given?
end
|
#to_mongo ⇒ Object
47
48
49
|
# File 'lib/mongomodel/concerns/attributes.rb', line 47
def to_mongo
attributes.to_mongo
end
|