mongomodel 0.5.5 → 0.5.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) hide show
  1. checksums.yaml +5 -5
  2. data/.travis.yml +23 -11
  3. data/gemfiles/rails-3.2.gemfile +2 -2
  4. data/gemfiles/rails-4-observers.gemfile +1 -1
  5. data/gemfiles/rails-4.1.gemfile +2 -2
  6. data/gemfiles/{mongoid.gemfile → rails-4.2.gemfile} +2 -3
  7. data/gemfiles/{mongo_mapper.gemfile → rails-5.0.gemfile} +2 -3
  8. data/gemfiles/rails-5.1.gemfile +10 -0
  9. data/gemfiles/rails-5.2.gemfile +10 -0
  10. data/lib/mongomodel.rb +15 -15
  11. data/lib/mongomodel/attributes/mongo.rb +7 -7
  12. data/lib/mongomodel/attributes/store.rb +4 -4
  13. data/lib/mongomodel/attributes/typecasting.rb +7 -7
  14. data/lib/mongomodel/compatibility/mongo_mapper.rb +3 -3
  15. data/lib/mongomodel/compatibility/mongoid.rb +3 -3
  16. data/lib/mongomodel/concerns/abstract_class.rb +3 -3
  17. data/lib/mongomodel/concerns/activemodel.rb +4 -4
  18. data/lib/mongomodel/concerns/associations.rb +8 -8
  19. data/lib/mongomodel/concerns/associations/base/association.rb +5 -5
  20. data/lib/mongomodel/concerns/associations/base/definition.rb +4 -4
  21. data/lib/mongomodel/concerns/associations/base/proxy.rb +1 -1
  22. data/lib/mongomodel/concerns/associations/belongs_to.rb +19 -19
  23. data/lib/mongomodel/concerns/associations/has_many_by_foreign_key.rb +36 -36
  24. data/lib/mongomodel/concerns/associations/has_many_by_ids.rb +34 -34
  25. data/lib/mongomodel/concerns/attribute_methods.rb +10 -10
  26. data/lib/mongomodel/concerns/attribute_methods/before_type_cast.rb +4 -4
  27. data/lib/mongomodel/concerns/attribute_methods/dirty.rb +95 -13
  28. data/lib/mongomodel/concerns/attribute_methods/forbidden.rb +1 -1
  29. data/lib/mongomodel/concerns/attribute_methods/multi_parameter_assignment.rb +6 -6
  30. data/lib/mongomodel/concerns/attribute_methods/nested.rb +18 -18
  31. data/lib/mongomodel/concerns/attribute_methods/protected.rb +3 -3
  32. data/lib/mongomodel/concerns/attribute_methods/query.rb +3 -3
  33. data/lib/mongomodel/concerns/attribute_methods/read.rb +4 -4
  34. data/lib/mongomodel/concerns/attribute_methods/write.rb +4 -4
  35. data/lib/mongomodel/concerns/attributes.rb +18 -18
  36. data/lib/mongomodel/concerns/callbacks.rb +7 -7
  37. data/lib/mongomodel/concerns/document_parent.rb +2 -2
  38. data/lib/mongomodel/concerns/logging.rb +2 -2
  39. data/lib/mongomodel/concerns/map_reduce.rb +11 -11
  40. data/lib/mongomodel/concerns/pretty_inspect.rb +3 -3
  41. data/lib/mongomodel/concerns/properties.rb +18 -18
  42. data/lib/mongomodel/concerns/record_status.rb +9 -13
  43. data/lib/mongomodel/concerns/serialization.rb +4 -4
  44. data/lib/mongomodel/concerns/timestamps.rb +4 -4
  45. data/lib/mongomodel/concerns/translation.rb +2 -2
  46. data/lib/mongomodel/concerns/validations.rb +5 -5
  47. data/lib/mongomodel/concerns/validations/associated.rb +1 -1
  48. data/lib/mongomodel/document.rb +6 -6
  49. data/lib/mongomodel/document/callbacks.rb +15 -21
  50. data/lib/mongomodel/document/collection_modifiers.rb +5 -5
  51. data/lib/mongomodel/document/dynamic_finders.rb +1 -1
  52. data/lib/mongomodel/document/indexes.rb +19 -19
  53. data/lib/mongomodel/document/optimistic_locking.rb +7 -7
  54. data/lib/mongomodel/document/persistence.rb +23 -23
  55. data/lib/mongomodel/document/scopes.rb +20 -20
  56. data/lib/mongomodel/document/validations.rb +6 -6
  57. data/lib/mongomodel/document/validations/uniqueness.rb +11 -11
  58. data/lib/mongomodel/embedded_document.rb +11 -11
  59. data/lib/mongomodel/locale/en.yml +0 -1
  60. data/lib/mongomodel/log_subscriber.rb +5 -5
  61. data/lib/mongomodel/railtie.rb +13 -13
  62. data/lib/mongomodel/support/collection.rb +31 -31
  63. data/lib/mongomodel/support/configuration.rb +11 -11
  64. data/lib/mongomodel/support/core_extensions.rb +1 -1
  65. data/lib/mongomodel/support/dynamic_finder.rb +12 -12
  66. data/lib/mongomodel/support/exceptions.rb +6 -6
  67. data/lib/mongomodel/support/instrumented_collection.rb +20 -20
  68. data/lib/mongomodel/support/map.rb +33 -33
  69. data/lib/mongomodel/support/mongo_operator.rb +6 -6
  70. data/lib/mongomodel/support/mongo_options.rb +18 -18
  71. data/lib/mongomodel/support/mongo_order.rb +16 -16
  72. data/lib/mongomodel/support/paginator.rb +8 -8
  73. data/lib/mongomodel/support/reference.rb +10 -10
  74. data/lib/mongomodel/support/scope.rb +37 -37
  75. data/lib/mongomodel/support/scope/array_methods.rb +1 -1
  76. data/lib/mongomodel/support/scope/batches.rb +1 -1
  77. data/lib/mongomodel/support/scope/dynamic_finders.rb +1 -1
  78. data/lib/mongomodel/support/scope/finder_methods.rb +7 -7
  79. data/lib/mongomodel/support/scope/load_methods.rb +1 -1
  80. data/lib/mongomodel/support/scope/pagination.rb +1 -1
  81. data/lib/mongomodel/support/scope/query_methods.rb +6 -6
  82. data/lib/mongomodel/support/scope/spawn_methods.rb +8 -8
  83. data/lib/mongomodel/support/types.rb +2 -2
  84. data/lib/mongomodel/support/types/array.rb +1 -1
  85. data/lib/mongomodel/support/types/boolean.rb +3 -3
  86. data/lib/mongomodel/support/types/custom.rb +3 -3
  87. data/lib/mongomodel/support/types/date.rb +2 -2
  88. data/lib/mongomodel/support/types/date_time.rb +6 -16
  89. data/lib/mongomodel/support/types/float.rb +1 -1
  90. data/lib/mongomodel/support/types/hash.rb +1 -1
  91. data/lib/mongomodel/support/types/integer.rb +13 -10
  92. data/lib/mongomodel/support/types/object.rb +5 -5
  93. data/lib/mongomodel/support/types/rational.rb +3 -3
  94. data/lib/mongomodel/support/types/time.rb +2 -2
  95. data/lib/mongomodel/version.rb +1 -1
  96. data/lib/rails/generators/mongo_model/config/templates/mongomodel.yml +3 -4
  97. data/lib/rails/generators/mongo_model/model/model_generator.rb +3 -3
  98. data/mongomodel.gemspec +5 -4
  99. data/spec/mongomodel/attributes/store_spec.rb +21 -21
  100. data/spec/mongomodel/concerns/activemodel_spec.rb +4 -4
  101. data/spec/mongomodel/concerns/associations/base/association_spec.rb +12 -12
  102. data/spec/mongomodel/concerns/associations/belongs_to_spec.rb +34 -21
  103. data/spec/mongomodel/concerns/associations/has_many_by_foreign_key_spec.rb +53 -53
  104. data/spec/mongomodel/concerns/associations/has_many_by_ids_spec.rb +30 -30
  105. data/spec/mongomodel/concerns/attribute_methods/before_type_cast_spec.rb +7 -7
  106. data/spec/mongomodel/concerns/attribute_methods/dirty_spec.rb +45 -41
  107. data/spec/mongomodel/concerns/attribute_methods/multi_parameter_assignment_spec.rb +7 -7
  108. data/spec/mongomodel/concerns/attribute_methods/nested_spec.rb +31 -31
  109. data/spec/mongomodel/concerns/attribute_methods/protected_spec.rb +15 -15
  110. data/spec/mongomodel/concerns/attribute_methods/query_spec.rb +19 -19
  111. data/spec/mongomodel/concerns/attribute_methods/read_spec.rb +9 -9
  112. data/spec/mongomodel/concerns/attribute_methods/write_spec.rb +6 -6
  113. data/spec/mongomodel/concerns/attribute_methods_spec.rb +13 -13
  114. data/spec/mongomodel/concerns/attributes_spec.rb +34 -34
  115. data/spec/mongomodel/concerns/callbacks_spec.rb +25 -21
  116. data/spec/mongomodel/concerns/logging_spec.rb +5 -3
  117. data/spec/mongomodel/concerns/map_reduce_spec.rb +19 -19
  118. data/spec/mongomodel/concerns/observing_spec.rb +3 -3
  119. data/spec/mongomodel/concerns/pretty_inspect_spec.rb +10 -10
  120. data/spec/mongomodel/concerns/properties_spec.rb +11 -11
  121. data/spec/mongomodel/concerns/serialization/json_serialization_spec.rb +13 -13
  122. data/spec/mongomodel/concerns/timestamps_spec.rb +39 -39
  123. data/spec/mongomodel/concerns/validations_spec.rb +41 -38
  124. data/spec/mongomodel/document/callbacks_spec.rb +20 -16
  125. data/spec/mongomodel/document/collection_modifiers_spec.rb +16 -16
  126. data/spec/mongomodel/document/dynamic_finders_spec.rb +46 -46
  127. data/spec/mongomodel/document/finders_spec.rb +15 -15
  128. data/spec/mongomodel/document/indexes_spec.rb +29 -29
  129. data/spec/mongomodel/document/optimistic_locking_spec.rb +16 -16
  130. data/spec/mongomodel/document/persistence_spec.rb +39 -39
  131. data/spec/mongomodel/document/scopes_spec.rb +17 -17
  132. data/spec/mongomodel/document/validations/uniqueness_spec.rb +46 -46
  133. data/spec/mongomodel/document/validations_spec.rb +35 -35
  134. data/spec/mongomodel/document_spec.rb +19 -19
  135. data/spec/mongomodel/embedded_document_spec.rb +19 -19
  136. data/spec/mongomodel/mongomodel_spec.rb +7 -6
  137. data/spec/mongomodel/support/collection_spec.rb +54 -54
  138. data/spec/mongomodel/support/configuration_spec.rb +1 -1
  139. data/spec/mongomodel/support/map_spec.rb +66 -66
  140. data/spec/mongomodel/support/mongo_operator_spec.rb +5 -5
  141. data/spec/mongomodel/support/mongo_options_spec.rb +42 -42
  142. data/spec/mongomodel/support/mongo_order_spec.rb +24 -24
  143. data/spec/mongomodel/support/paginator_spec.rb +15 -15
  144. data/spec/mongomodel/support/property_spec.rb +29 -23
  145. data/spec/mongomodel/support/scope_spec.rb +205 -204
  146. data/spec/spec_helper.rb +13 -2
  147. data/spec/support/callbacks.rb +3 -8
  148. data/spec/support/helpers/define_class.rb +7 -7
  149. data/spec/support/helpers/document_finder_stubs.rb +6 -6
  150. data/spec/support/helpers/specs_for.rb +1 -1
  151. data/spec/support/helpers/validations.rb +1 -1
  152. data/spec/support/matchers/find_with.rb +8 -8
  153. data/spec/support/matchers/respond_to_boolean.rb +3 -3
  154. data/spec/support/matchers/run_callbacks.rb +6 -9
  155. data/spec/support/models.rb +5 -5
  156. metadata +23 -7
@@ -2,23 +2,23 @@ module MongoModel
2
2
  module AttributeMethods
3
3
  module Write
4
4
  extend ActiveSupport::Concern
5
-
5
+
6
6
  included do
7
7
  attribute_method_suffix "="
8
8
  end
9
-
9
+
10
10
  # Updates the attribute identified by <tt>name</tt> with the specified +value+.
11
11
  # Values are typecast to the appropriate type determined by the property.
12
12
  def write_attribute(name, value)
13
13
  attributes[name.to_sym] = value
14
14
  end
15
-
15
+
16
16
  # Updates the attribute identified by <tt>name</tt> with the specified +value+.
17
17
  # (Alias for the protected write_attribute method).
18
18
  def []=(name, value)
19
19
  write_attribute(name, value)
20
20
  end
21
-
21
+
22
22
  private
23
23
  # Handle *= for method_missing.
24
24
  def attribute=(attribute_name, value)
@@ -3,19 +3,19 @@ require 'active_support/core_ext/module/aliasing'
3
3
  module MongoModel
4
4
  module Attributes
5
5
  extend ActiveSupport::Concern
6
-
6
+
7
7
  def initialize(attrs={}, options={})
8
8
  assign_attributes(attrs || {}, options)
9
9
  yield self if block_given?
10
10
  end
11
-
11
+
12
12
  def attributes
13
13
  @attributes ||= Attributes::Store.new(self)
14
14
  end
15
-
15
+
16
16
  def assign_attributes(attrs, options={})
17
17
  return unless attrs
18
-
18
+
19
19
  attrs.each do |attr, value|
20
20
  if respond_to?("#{attr}=")
21
21
  send("#{attr}=", value)
@@ -24,51 +24,51 @@ module MongoModel
24
24
  end
25
25
  end
26
26
  end
27
-
27
+
28
28
  def attributes=(attrs)
29
29
  assign_attributes(attrs)
30
30
  end
31
-
31
+
32
32
  def freeze
33
33
  attributes.freeze; self
34
34
  end
35
-
35
+
36
36
  def frozen?
37
37
  attributes.frozen?
38
38
  end
39
-
39
+
40
40
  # Returns duplicated record with unfreezed attributes.
41
41
  def dup
42
42
  obj = super
43
43
  obj.instance_variable_set('@attributes', instance_variable_get('@attributes').dup)
44
44
  obj
45
45
  end
46
-
46
+
47
47
  def to_mongo
48
48
  attributes.to_mongo
49
49
  end
50
-
50
+
51
51
  def embedded_documents
52
52
  docs = []
53
-
53
+
54
54
  docs.concat attributes.values.select { |attr| attr.is_a?(EmbeddedDocument) }
55
-
55
+
56
56
  attributes.values.select { |attr| attr.is_a?(Collection) }.each do |collection|
57
57
  docs.concat collection.embedded_documents
58
58
  end
59
-
59
+
60
60
  attributes.values.select { |attr| attr.is_a?(Map) && attr.to <= EmbeddedDocument }.each do |map|
61
61
  docs.concat map.values
62
62
  end
63
-
63
+
64
64
  docs
65
65
  end
66
-
66
+
67
67
  protected
68
68
  def sanitize_for_mass_assignment(attrs, options={})
69
69
  attrs
70
70
  end
71
-
71
+
72
72
  module ClassMethods
73
73
  def from_mongo(hash)
74
74
  if hash
@@ -77,11 +77,11 @@ module MongoModel
77
77
  doc
78
78
  end
79
79
  end
80
-
80
+
81
81
  private
82
82
  def class_for_type(type)
83
83
  klass = type.constantize
84
-
84
+
85
85
  if klass.ancestors.include?(self)
86
86
  klass
87
87
  else
@@ -20,7 +20,7 @@ module MongoModel
20
20
  # * (6) <tt>after_save</tt>
21
21
  #
22
22
  # That's a total of eight callbacks, which gives you immense power to react and prepare for each state in the
23
- # MongoModel lifecycle. The sequence for calling <tt>Document#save</tt> for an existing record is similar, except that each
23
+ # MongoModel lifecycle. The sequence for calling <tt>Document#save</tt> for an existing record is similar, except that each
24
24
  # <tt>_on_create</tt> callback is replaced by the corresponding <tt>_on_update</tt> callback.
25
25
  #
26
26
  # Examples:
@@ -199,23 +199,23 @@ module MongoModel
199
199
  :after_create, :before_update, :around_update, :after_update,
200
200
  :before_destroy, :around_destroy, :after_destroy
201
201
  ]
202
-
202
+
203
203
  module ClassMethods
204
204
  include ActiveModel::Callbacks
205
205
  end
206
-
206
+
207
207
  included do
208
208
  include ActiveModel::Validations::Callbacks
209
-
209
+
210
210
  define_model_callbacks :initialize, :find, :only => :after
211
211
  define_model_callbacks :save, :create, :update, :destroy
212
212
  end
213
-
213
+
214
214
  def initialize(*args, &block) #:nodoc:
215
215
  super
216
216
  run_callbacks_with_embedded(:initialize)
217
217
  end
218
-
218
+
219
219
  def run_callbacks_with_embedded(kind, *args, &block)
220
220
  if block_given?
221
221
  embedded_callbacks = nest_embedded_callbacks(kind, *args, &block)
@@ -225,7 +225,7 @@ module MongoModel
225
225
  embedded_documents.each { |doc| doc.run_callbacks(kind, *args) } unless kind == :initialize
226
226
  end
227
227
  end
228
-
228
+
229
229
  private
230
230
  def nest_embedded_callbacks(kind, *args, &block)
231
231
  embedded_documents.inject(block) do |callback, doc|
@@ -1,7 +1,7 @@
1
1
  module MongoModel
2
2
  module DocumentParent
3
3
  extend ActiveSupport::Concern
4
-
4
+
5
5
  def parent_document
6
6
  if @_parent_document.is_a?(Proc)
7
7
  case @_parent_document.arity
@@ -12,7 +12,7 @@ module MongoModel
12
12
  @_parent_document
13
13
  end
14
14
  end
15
-
15
+
16
16
  def parent_document=(doc)
17
17
  @_parent_document = doc
18
18
  end
@@ -1,13 +1,13 @@
1
1
  module MongoModel
2
2
  module Logging
3
3
  extend ActiveSupport::Concern
4
-
4
+
5
5
  module ClassMethods
6
6
  def logger
7
7
  MongoModel.logger
8
8
  end
9
9
  end
10
-
10
+
11
11
  def logger
12
12
  self.class.logger
13
13
  end
@@ -1,45 +1,45 @@
1
1
  module MongoModel::MapReduce
2
2
  extend ActiveSupport::Concern
3
-
3
+
4
4
  include MongoModel::DocumentExtensions::Scopes
5
-
5
+
6
6
  included do
7
7
  class_attribute :parent_collection
8
8
  end
9
-
9
+
10
10
  module ClassMethods
11
11
  def from_mongo(attrs)
12
12
  new(attrs['_id'], attrs['value'])
13
13
  end
14
-
14
+
15
15
  def cached
16
16
  from(collection_name)
17
17
  end
18
-
18
+
19
19
  def database
20
20
  parent_collection.db
21
21
  end
22
-
22
+
23
23
  def collection
24
24
  parent_collection.map_reduce(map_function, reduce_function, map_reduce_options)
25
25
  end
26
-
26
+
27
27
  def collection_name
28
28
  @_collection_name || default_collection_name
29
29
  end
30
-
30
+
31
31
  def collection_name=(name)
32
32
  @_collection_name = name
33
33
  end
34
-
34
+
35
35
  def default_collection_name
36
36
  [parent_collection.name, name.demodulize.tableize.gsub(/\//, '.')].join("._")
37
37
  end
38
-
38
+
39
39
  def map_function
40
40
  raise NotImplementedError, "map_function is not implemented"
41
41
  end
42
-
42
+
43
43
  def reduce_function
44
44
  raise NotImplementedError, "reduce_function is not implemented"
45
45
  end
@@ -1,7 +1,7 @@
1
1
  module MongoModel
2
2
  module PrettyInspect
3
3
  extend ActiveSupport::Concern
4
-
4
+
5
5
  module ClassMethods
6
6
  # Returns a string like 'Post(title:String, body:String)'
7
7
  def inspect
@@ -13,12 +13,12 @@ module MongoModel
13
13
  end
14
14
  end
15
15
  end
16
-
16
+
17
17
  # Returns the contents of the document as a nicely formatted string.
18
18
  def inspect
19
19
  "#<#{self.class.name} #{attributes_for_inspect}>"
20
20
  end
21
-
21
+
22
22
  private
23
23
  def attributes_for_inspect
24
24
  attrs = self.class.model_properties.map { |name, property| "#{name}: #{send(name).inspect}" }
@@ -6,57 +6,57 @@ require 'active_support/core_ext/hash/except'
6
6
  module MongoModel
7
7
  module Properties
8
8
  extend ActiveSupport::Concern
9
-
9
+
10
10
  def properties
11
11
  self.class.properties
12
12
  end
13
-
13
+
14
14
  module ClassMethods
15
15
  def property(name, type, options={})
16
16
  properties[name.to_sym] = Property.new(name, type, options).tap do |property|
17
17
  include type.mongomodel_accessors(property) if type.respond_to?(:mongomodel_accessors)
18
18
  end
19
19
  end
20
-
20
+
21
21
  def properties
22
22
  @properties ||= ActiveSupport::OrderedHash.new
23
23
  end
24
-
24
+
25
25
  def properties=(properties)
26
26
  @properties = properties
27
27
  end
28
-
28
+
29
29
  def model_properties
30
30
  properties.reject { |k, p| p.internal? }
31
31
  end
32
-
32
+
33
33
  def internal_properties
34
34
  properties.select { |k, p| p.internal? }.map { |k, p| p }
35
35
  end
36
-
36
+
37
37
  def inherited(subclass)
38
38
  super
39
39
  subclass.properties = properties.dup
40
40
  end
41
41
  end
42
-
42
+
43
43
  class Property
44
44
  delegate :cast, :boolean, :to_mongo, :from_mongo, :to_query, :to => :type_converter
45
-
45
+
46
46
  attr_reader :name, :type, :options
47
-
47
+
48
48
  def initialize(name, type, options={})
49
49
  @name, @type, @options = name.to_sym, type, options
50
50
  end
51
-
51
+
52
52
  def as
53
53
  options[:as] || name.to_s
54
54
  end
55
-
55
+
56
56
  def default(instance)
57
57
  if options.key?(:default)
58
58
  default = options[:default]
59
-
59
+
60
60
  if default.is_a?(Proc)
61
61
  case default.arity
62
62
  when 0 then instance.instance_exec(&default)
@@ -69,23 +69,23 @@ module MongoModel
69
69
  type.mongomodel_default(instance)
70
70
  end
71
71
  end
72
-
72
+
73
73
  def ==(other)
74
74
  other.is_a?(self.class) && name == other.name && type == other.type && options == other.options
75
75
  end
76
-
76
+
77
77
  def embeddable?
78
78
  type.ancestors.include?(EmbeddedDocument)
79
79
  end
80
-
80
+
81
81
  def internal?
82
82
  as =~ /^_/ || options[:internal]
83
83
  end
84
-
84
+
85
85
  def validate?
86
86
  options[:validate] != false
87
87
  end
88
-
88
+
89
89
  private
90
90
  def type_converter
91
91
  @type_converter ||= Types.converter_for(type)
@@ -3,35 +3,31 @@ require 'active_support/core_ext/module/aliasing'
3
3
  module MongoModel
4
4
  module RecordStatus
5
5
  extend ActiveSupport::Concern
6
-
7
- included do
8
- alias_method_chain :initialize, :record_status
9
- end
10
-
6
+
11
7
  def new_record?
12
8
  @_new_record
13
9
  end
14
-
10
+
15
11
  def destroyed?
16
12
  @_destroyed
17
13
  end
18
-
19
- def initialize_with_record_status(*args, &block)
14
+
15
+ def initialize(*)
20
16
  set_new_record(true)
21
17
  set_destroyed(false)
22
-
23
- initialize_without_record_status(*args, &block)
18
+
19
+ super
24
20
  end
25
-
21
+
26
22
  protected
27
23
  def set_new_record(value)
28
24
  set_record_status(:new_record, value)
29
25
  end
30
-
26
+
31
27
  def set_destroyed(value)
32
28
  set_record_status(:destroyed, value)
33
29
  end
34
-
30
+
35
31
  private
36
32
  def set_record_status(type, value)
37
33
  instance_variable_set("@_#{type}", value)
@@ -1,9 +1,9 @@
1
1
  module MongoModel
2
2
  module Serialization
3
3
  extend ActiveSupport::Concern
4
-
4
+
5
5
  include ActiveModel::Serializers::JSON
6
-
6
+
7
7
  def serializable_hash(given_options = nil)
8
8
  options = given_options ? given_options.dup : {}
9
9
 
@@ -12,7 +12,7 @@ module MongoModel
12
12
  options[:methods] = Array.wrap(options[:methods]).map { |n| n.to_s }
13
13
 
14
14
  attribute_names = attributes_for_serialization
15
-
15
+
16
16
  if options[:only].any?
17
17
  attribute_names &= options[:only]
18
18
  elsif options[:except].any?
@@ -29,7 +29,7 @@ module MongoModel
29
29
  hash
30
30
  }
31
31
  end
32
-
32
+
33
33
  protected
34
34
  def attributes_for_serialization
35
35
  properties.reject { |name, property|