mongoid 2.0.0.rc.5 → 2.0.0.rc.6
Sign up to get free protection for your applications and to get access to all the features.
- data/{MIT_LICENSE → LICENSE} +0 -0
- data/README.rdoc +2 -7
- data/lib/config/locales/bg.yml +3 -1
- data/lib/config/locales/de.yml +3 -0
- data/lib/config/locales/en.yml +3 -0
- data/lib/config/locales/es.yml +3 -0
- data/lib/config/locales/fr.yml +4 -1
- data/lib/config/locales/hu.yml +3 -1
- data/lib/config/locales/it.yml +3 -0
- data/lib/config/locales/kr.yml +3 -0
- data/lib/config/locales/nl.yml +3 -0
- data/lib/config/locales/pl.yml +3 -0
- data/lib/config/locales/pt-br.yml +3 -0
- data/lib/config/locales/pt.yml +3 -0
- data/lib/config/locales/ro.yml +3 -1
- data/lib/config/locales/sv.yml +4 -1
- data/lib/config/locales/zh-CN.yml +3 -0
- data/lib/mongoid.rb +1 -0
- data/lib/mongoid/attributes.rb +1 -1
- data/lib/mongoid/callbacks.rb +3 -17
- data/lib/mongoid/components.rb +1 -1
- data/lib/mongoid/contexts/enumerable.rb +17 -0
- data/lib/mongoid/contexts/mongo.rb +9 -6
- data/lib/mongoid/criterion/inspection.rb +1 -3
- data/lib/mongoid/errors.rb +1 -0
- data/lib/mongoid/errors/unsaved_document.rb +23 -0
- data/lib/mongoid/extras.rb +1 -1
- data/lib/mongoid/fields.rb +81 -15
- data/lib/mongoid/finders.rb +1 -1
- data/lib/mongoid/persistence.rb +16 -0
- data/lib/mongoid/railtie.rb +6 -11
- data/lib/mongoid/relations/accessors.rb +1 -1
- data/lib/mongoid/relations/builders/nested_attributes/many.rb +3 -3
- data/lib/mongoid/relations/builders/nested_attributes/one.rb +2 -2
- data/lib/mongoid/relations/builders/referenced/many_to_many.rb +1 -1
- data/lib/mongoid/relations/cascading.rb +1 -1
- data/lib/mongoid/relations/embedded/many.rb +1 -1
- data/lib/mongoid/relations/macros.rb +1 -1
- data/lib/mongoid/relations/many.rb +20 -0
- data/lib/mongoid/relations/metadata.rb +1 -1
- data/lib/mongoid/relations/nested_builder.rb +18 -0
- data/lib/mongoid/relations/polymorphic.rb +1 -1
- data/lib/mongoid/relations/referenced/many.rb +52 -2
- data/lib/mongoid/relations/referenced/many_to_many.rb +35 -0
- data/lib/mongoid/safety.rb +1 -1
- data/lib/mongoid/serialization.rb +99 -0
- data/lib/mongoid/timestamps.rb +1 -1
- data/lib/mongoid/validations.rb +47 -36
- data/lib/mongoid/version.rb +1 -1
- metadata +11 -11
data/{MIT_LICENSE → LICENSE}
RENAMED
File without changes
|
data/README.rdoc
CHANGED
@@ -1,8 +1,3 @@
|
|
1
|
-
= PLEASE READ (03 JAN 2011)
|
2
|
-
|
3
|
-
USERS CURRENTLY POINTED AT master, PLEASE MOVE TO safe_master UNTIL
|
4
|
-
FURTHER NOTICE.
|
5
|
-
|
6
1
|
= Overview
|
7
2
|
|
8
3
|
== About Mongoid
|
@@ -16,7 +11,7 @@ Mongoid is an ODM (Object-Document-Mapper) framework for MongoDB in Ruby.
|
|
16
11
|
|
17
12
|
== Compatibility
|
18
13
|
|
19
|
-
Mongoid is developed against Ruby 1.8.7, 1.9.
|
14
|
+
Mongoid is developed against Ruby 1.8.7, 1.9.2, and REE.
|
20
15
|
|
21
16
|
= Documentation
|
22
17
|
|
@@ -28,7 +23,7 @@ Please see the new Mongoid website for up-to-date documentation:
|
|
28
23
|
|
29
24
|
= License
|
30
25
|
|
31
|
-
Copyright (c) 2009, 2010 Durran Jordan
|
26
|
+
Copyright (c) 2009, 2010, 2011 Durran Jordan
|
32
27
|
|
33
28
|
Permission is hereby granted, free of charge, to any person obtaining
|
34
29
|
a copy of this software and associated documentation files (the
|
data/lib/config/locales/bg.yml
CHANGED
@@ -39,4 +39,6 @@ bg:
|
|
39
39
|
references_many като масив.
|
40
40
|
calling_document_find_with_nil_is_invalid:
|
41
41
|
Извикването на Document#find със nil е невалидно
|
42
|
-
|
42
|
+
unsaved_document:
|
43
|
+
You cannot call create or create! through a relational association
|
44
|
+
relation (%{document}) who's parent (%{base}) is not already saved.
|
data/lib/config/locales/de.yml
CHANGED
@@ -39,3 +39,6 @@ de:
|
|
39
39
|
Es ist nicht erlaubt, inverse_of für diese Beziehung zu definieren.
|
40
40
|
Diese Option kann nur für embedded_in oder references_many als Array
|
41
41
|
verwendet werden.
|
42
|
+
unsaved_document:
|
43
|
+
You cannot call create or create! through a relational association
|
44
|
+
relation (%{document}) who's parent (%{base}) is not already saved.
|
data/lib/config/locales/en.yml
CHANGED
@@ -40,3 +40,6 @@ en:
|
|
40
40
|
use this option on embedded_in or references_many as array.
|
41
41
|
calling_document_find_with_nil_is_invalid:
|
42
42
|
Calling Document#find with nil is invalid
|
43
|
+
unsaved_document:
|
44
|
+
You cannot call create or create! through a relational association
|
45
|
+
relation (%{document}) who's parent (%{base}) is not already saved.
|
data/lib/config/locales/es.yml
CHANGED
@@ -39,3 +39,6 @@ es:
|
|
39
39
|
association_cant_have_inverse_of:
|
40
40
|
No está permitido definir inverse_of en esta asociación. Utilice
|
41
41
|
esta opción sólo en embedded_in o en references_many as array.
|
42
|
+
unsaved_document:
|
43
|
+
You cannot call create or create! through a relational association
|
44
|
+
relation (%{document}) who's parent (%{base}) is not already saved.
|
data/lib/config/locales/fr.yml
CHANGED
@@ -39,4 +39,7 @@ fr:
|
|
39
39
|
pour les associations references_on ou references_many."
|
40
40
|
association_cant_have_inverse_of:
|
41
41
|
"Definir un inverse_of pour cette association n'est pas autorisé.
|
42
|
-
Utilisez cette option seulement sur embedded_in ou references_many."
|
42
|
+
Utilisez cette option seulement sur embedded_in ou references_many."
|
43
|
+
unsaved_document:
|
44
|
+
You cannot call create or create! through a relational association
|
45
|
+
relation (%{document}) who's parent (%{base}) is not already saved.
|
data/lib/config/locales/hu.yml
CHANGED
@@ -42,4 +42,6 @@ hu:
|
|
42
42
|
esetében használható.
|
43
43
|
calling_document_find_with_nil_is_invalid:
|
44
44
|
Document#find parancs nil érték esetében érvénytelen.
|
45
|
-
|
45
|
+
unsaved_document:
|
46
|
+
You cannot call create or create! through a relational association
|
47
|
+
relation (%{document}) who's parent (%{base}) is not already saved.
|
data/lib/config/locales/it.yml
CHANGED
@@ -37,3 +37,6 @@ it:
|
|
37
37
|
association_cant_have_inverse_of:
|
38
38
|
Non è permesso definire un inverse_of in questa associazione.
|
39
39
|
Usa questa opzione solo per embedded_in o references_many as array.
|
40
|
+
unsaved_document:
|
41
|
+
You cannot call create or create! through a relational association
|
42
|
+
relation (%{document}) who's parent (%{base}) is not already saved.
|
data/lib/config/locales/kr.yml
CHANGED
@@ -63,3 +63,6 @@ kr:
|
|
63
63
|
#Defining an inverse_of on this association is not allowed. Only
|
64
64
|
#use this option on embedded_in or references_many as array.
|
65
65
|
|
66
|
+
unsaved_document:
|
67
|
+
You cannot call create or create! through a relational association
|
68
|
+
relation (%{document}) who's parent (%{base}) is not already saved.
|
data/lib/config/locales/nl.yml
CHANGED
@@ -37,3 +37,6 @@ nl:
|
|
37
37
|
alleen deze optie met embedded_in en references_many as array.
|
38
38
|
calling_document_find_with_nil_is_invalid:
|
39
39
|
Het is niet toegestaan om Document#find aan te roepen met de waarde nil.
|
40
|
+
unsaved_document:
|
41
|
+
You cannot call create or create! through a relational association
|
42
|
+
relation (%{document}) who's parent (%{base}) is not already saved.
|
data/lib/config/locales/pl.yml
CHANGED
@@ -37,3 +37,6 @@ pl:
|
|
37
37
|
association_cant_have_inverse_of:
|
38
38
|
Definiowanie inverse_of dla tej asocjacji jest niedozwolone. Używaj
|
39
39
|
tej opcji tylko z embedded_in lub references_many as array.
|
40
|
+
unsaved_document:
|
41
|
+
You cannot call create or create! through a relational association
|
42
|
+
relation (%{document}) who's parent (%{base}) is not already saved.
|
@@ -38,3 +38,6 @@ pt-br:
|
|
38
38
|
association_cant_have_inverse_of:
|
39
39
|
A definição de inverse_of nesta associação não é permitida. Apenas
|
40
40
|
use esta opção em embedded_in ou references_many as array.
|
41
|
+
unsaved_document:
|
42
|
+
You cannot call create or create! through a relational association
|
43
|
+
relation (%{document}) who's parent (%{base}) is not already saved.
|
data/lib/config/locales/pt.yml
CHANGED
@@ -38,3 +38,6 @@ pt:
|
|
38
38
|
association_cant_have_inverse_of:
|
39
39
|
A definição de inverse_of nesta associação não é permitida. Apenas
|
40
40
|
use esta opção em embedded_in ou references_many como lista.
|
41
|
+
unsaved_document:
|
42
|
+
You cannot call create or create! through a relational association
|
43
|
+
relation (%{document}) who's parent (%{base}) is not already saved.
|
data/lib/config/locales/ro.yml
CHANGED
@@ -44,4 +44,6 @@ ro:
|
|
44
44
|
tip embedded_in sau references_many as array.
|
45
45
|
calling_document_find_with_nil_is_invalid:
|
46
46
|
Folosirea metodei Document#find cu valoarea nil este invalidă.
|
47
|
-
|
47
|
+
unsaved_document:
|
48
|
+
You cannot call create or create! through a relational association
|
49
|
+
relation (%{document}) who's parent (%{base}) is not already saved.
|
data/lib/config/locales/sv.yml
CHANGED
@@ -37,4 +37,7 @@ sv:
|
|
37
37
|
är endast giltigt för references_one eller references_many associationer.
|
38
38
|
association_cant_have_inverse_of:
|
39
39
|
Att definera inverse_of på denna association är inte tillåtet. Använd
|
40
|
-
endast detta alternativ på embedded_in eller references_many as array.
|
40
|
+
endast detta alternativ på embedded_in eller references_many as array.
|
41
|
+
unsaved_document:
|
42
|
+
You cannot call create or create! through a relational association
|
43
|
+
relation (%{document}) who's parent (%{base}) is not already saved.
|
@@ -29,3 +29,6 @@ en:
|
|
29
29
|
dependent => destroy|delete 选项只有在references_one或者references_many时候有效.
|
30
30
|
association_cant_have_inverse_of:
|
31
31
|
在当前的关联中,不允许定义inverse_of去,其只有在embedded_in或者references_many是数组的情况下使用
|
32
|
+
unsaved_document:
|
33
|
+
You cannot call create or create! through a relational association
|
34
|
+
relation (%{document}) who's parent (%{base}) is not already saved.
|
data/lib/mongoid.rb
CHANGED
data/lib/mongoid/attributes.rb
CHANGED
data/lib/mongoid/callbacks.rb
CHANGED
@@ -4,24 +4,10 @@ module Mongoid #:nodoc:
|
|
4
4
|
extend ActiveSupport::Concern
|
5
5
|
included do
|
6
6
|
extend ActiveModel::Callbacks
|
7
|
+
include ActiveModel::Validations::Callbacks
|
7
8
|
|
8
|
-
define_model_callbacks
|
9
|
-
|
10
|
-
:destroy,
|
11
|
-
:initialize,
|
12
|
-
:save,
|
13
|
-
:update,
|
14
|
-
:validation
|
15
|
-
end
|
16
|
-
|
17
|
-
# Determine if the document is valid.
|
18
|
-
#
|
19
|
-
# @example Is the document valid?
|
20
|
-
# person.valid?
|
21
|
-
#
|
22
|
-
# @return [ true, false ] True if valid, false if not.
|
23
|
-
def valid?(*)
|
24
|
-
_run_validation_callbacks { super }
|
9
|
+
define_model_callbacks :initialize, :only => :after
|
10
|
+
define_model_callbacks :create, :destroy, :save, :update
|
25
11
|
end
|
26
12
|
end
|
27
13
|
end
|
data/lib/mongoid/components.rb
CHANGED
@@ -14,7 +14,6 @@ module Mongoid #:nodoc
|
|
14
14
|
|
15
15
|
include ActiveModel::Conversion
|
16
16
|
include ActiveModel::Naming
|
17
|
-
include ActiveModel::Serialization
|
18
17
|
include ActiveModel::MassAssignmentSecurity
|
19
18
|
include ActiveModel::Serializers::JSON
|
20
19
|
include ActiveModel::Serializers::Xml
|
@@ -38,6 +37,7 @@ module Mongoid #:nodoc
|
|
38
37
|
include Mongoid::Persistence
|
39
38
|
include Mongoid::Relations
|
40
39
|
include Mongoid::Safety
|
40
|
+
include Mongoid::Serialization
|
41
41
|
include Mongoid::State
|
42
42
|
include Mongoid::Validations
|
43
43
|
include Mongoid::Callbacks
|
@@ -168,6 +168,23 @@ module Mongoid #:nodoc:
|
|
168
168
|
end
|
169
169
|
end
|
170
170
|
|
171
|
+
# Very basic update that will perform a simple atomic $set of the
|
172
|
+
# attributes provided in the hash. Can be expanded to later for more
|
173
|
+
# robust functionality.
|
174
|
+
#
|
175
|
+
# @example Update all matching documents.
|
176
|
+
# context.update_all(:title => "Sir")
|
177
|
+
#
|
178
|
+
# @param [ Hash ] attributes The sets to perform.
|
179
|
+
#
|
180
|
+
# @since 2.0.0.rc.6
|
181
|
+
def update_all(attributes = nil)
|
182
|
+
iterate do |doc|
|
183
|
+
doc.update_attributes(attributes || {})
|
184
|
+
end
|
185
|
+
end
|
186
|
+
alias :update :update_all
|
187
|
+
|
171
188
|
protected
|
172
189
|
# Filters the documents against the criteria's selector
|
173
190
|
def filter
|
@@ -55,15 +55,18 @@ module Mongoid #:nodoc:
|
|
55
55
|
|
56
56
|
# Get the count of matching documents in the database for the context.
|
57
57
|
#
|
58
|
-
#
|
58
|
+
# @example Get the count without skip and limit taken into consideration.
|
59
|
+
# context.count
|
59
60
|
#
|
60
|
-
#
|
61
|
+
# @example Get the count with skip and limit applied.
|
62
|
+
# context.count(true)
|
61
63
|
#
|
62
|
-
#
|
64
|
+
# @param [Boolean] extras True to inclued previous skip/limit
|
65
|
+
# statements in the count; false to ignore them. Defaults to `false`.
|
63
66
|
#
|
64
|
-
#
|
65
|
-
def count
|
66
|
-
@count ||= klass.collection.find(selector, process_options).count
|
67
|
+
# @return [ Integer ] The count of documents.
|
68
|
+
def count(extras = false)
|
69
|
+
@count ||= klass.collection.find(selector, process_options).count(extras)
|
67
70
|
end
|
68
71
|
|
69
72
|
# Delete all the documents in the database matching the selector.
|
@@ -13,9 +13,7 @@ module Mongoid #:nodoc:
|
|
13
13
|
def inspect
|
14
14
|
"#<Mongoid::Criteria\n" <<
|
15
15
|
" selector: #{selector.inspect},\n" <<
|
16
|
-
" options: #{options.inspect}
|
17
|
-
" count: #{count.inspect},\n" <<
|
18
|
-
" matching: #{entries.inspect}>\n"
|
16
|
+
" options: #{options.inspect}>\n"
|
19
17
|
end
|
20
18
|
end
|
21
19
|
end
|
data/lib/mongoid/errors.rb
CHANGED
@@ -7,5 +7,6 @@ require "mongoid/errors/invalid_field"
|
|
7
7
|
require "mongoid/errors/invalid_options"
|
8
8
|
require "mongoid/errors/invalid_type"
|
9
9
|
require "mongoid/errors/too_many_nested_attribute_records"
|
10
|
+
require "mongoid/errors/unsaved_document"
|
10
11
|
require "mongoid/errors/unsupported_version"
|
11
12
|
require "mongoid/errors/validations"
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module Mongoid #:nodoc
|
3
|
+
module Errors #:nodoc
|
4
|
+
|
5
|
+
# Raised when attempting to call create or create! through a
|
6
|
+
# references_many when the parent document has not been saved. This
|
7
|
+
# prevents the child from getting presisted and immediately being orphaned.
|
8
|
+
class UnsavedDocument < MongoidError
|
9
|
+
|
10
|
+
attr_reader :base, :document
|
11
|
+
|
12
|
+
def initialize(base, document)
|
13
|
+
@base, @document = base, document
|
14
|
+
super(
|
15
|
+
translate(
|
16
|
+
"unsaved_document",
|
17
|
+
{ :base => base.class.name, :document => document.class.name }
|
18
|
+
)
|
19
|
+
)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/lib/mongoid/extras.rb
CHANGED
@@ -3,7 +3,7 @@ module Mongoid #:nodoc:
|
|
3
3
|
module Extras #:nodoc:
|
4
4
|
extend ActiveSupport::Concern
|
5
5
|
included do
|
6
|
-
|
6
|
+
class_attribute :cached, :enslaved
|
7
7
|
self.cached = false
|
8
8
|
self.enslaved = false
|
9
9
|
delegate :cached?, :enslaved?, :to => "self.class"
|
data/lib/mongoid/fields.rb
CHANGED
@@ -1,46 +1,98 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
module Mongoid #:nodoc
|
3
|
-
|
3
|
+
|
4
|
+
# This module defines behaviour for fields.
|
5
|
+
module Fields
|
4
6
|
extend ActiveSupport::Concern
|
7
|
+
|
5
8
|
included do
|
6
9
|
# Set up the class attributes that must be available to all subclasses.
|
7
10
|
# These include defaults, fields
|
8
|
-
class_inheritable_accessor :fields
|
9
|
-
|
10
|
-
self.fields = {}
|
11
11
|
delegate :defaults, :fields, :to => "self.class"
|
12
12
|
end
|
13
13
|
|
14
14
|
module ClassMethods #:nodoc
|
15
|
+
|
15
16
|
# Defines all the fields that are accessable on the Document
|
16
17
|
# For each field that is defined, a getter and setter will be
|
17
18
|
# added as an instance method to the Document.
|
18
19
|
#
|
19
|
-
#
|
20
|
+
# @example Define a field.
|
21
|
+
# field :score, :type => Integer, :default => 0
|
20
22
|
#
|
21
|
-
# name
|
22
|
-
#
|
23
|
+
# @param [ Symbol ] name The name of the field.
|
24
|
+
# @param [ Hash ] options The options to pass to the field.
|
23
25
|
#
|
24
|
-
#
|
25
|
-
#
|
26
|
-
#
|
26
|
+
# @option options [ Class ] :type The type of the field.
|
27
|
+
# @option options [ String ] :label The label for the field.
|
28
|
+
# @option options [ Object, Proc ] :default The field's default
|
27
29
|
def field(name, options = {})
|
28
30
|
access = name.to_s
|
29
31
|
set_field(access, options)
|
30
32
|
attr_protected name if options[:accessible] == false
|
31
33
|
end
|
32
34
|
|
33
|
-
#
|
35
|
+
# Return the fields for this class.
|
36
|
+
#
|
37
|
+
# @example Get the fields.
|
38
|
+
# Person.fields
|
39
|
+
#
|
40
|
+
# @return [ Hash ] The fields for this document.
|
41
|
+
#
|
42
|
+
# @since 2.0.0.rc.6
|
43
|
+
def fields
|
44
|
+
@fields ||= {}
|
45
|
+
end
|
46
|
+
|
47
|
+
# Set the fields for the class.
|
48
|
+
#
|
49
|
+
# @example Set the fields.
|
50
|
+
# Person.fields = fields
|
51
|
+
#
|
52
|
+
# @param [ Hash ] fields The hash of fields to set.
|
53
|
+
#
|
54
|
+
# @since 2.0.0.rc.6
|
55
|
+
def fields=(fields)
|
56
|
+
@fields = fields
|
57
|
+
end
|
58
|
+
|
59
|
+
# Returns the default values for the fields on the document.
|
60
|
+
#
|
61
|
+
# @example Get the defaults.
|
62
|
+
# Person.defaults
|
63
|
+
#
|
64
|
+
# @return [ Hash ] The field defaults.
|
34
65
|
def defaults
|
35
|
-
fields.inject({}) do |defs,(field_name,field)|
|
66
|
+
fields.inject({}) do |defs, (field_name,field)|
|
36
67
|
next(defs) if field.default.nil?
|
37
68
|
defs[field_name.to_s] = field.default
|
38
69
|
defs
|
39
70
|
end
|
40
71
|
end
|
41
72
|
|
73
|
+
# When inheriting, we want to copy the fields from the parent class and
|
74
|
+
# set the on the child to start, mimicing the behaviour of the old
|
75
|
+
# class_inheritable_accessor that was deprecated in Rails edge.
|
76
|
+
#
|
77
|
+
# @example Inherit from this class.
|
78
|
+
# Person.inherited(Doctor)
|
79
|
+
#
|
80
|
+
# @param [ Class ] subclass The inheriting class.
|
81
|
+
#
|
82
|
+
# @since 2.0.0.rc.6
|
83
|
+
def inherited(subclass)
|
84
|
+
subclass.fields = fields.dup
|
85
|
+
end
|
86
|
+
|
42
87
|
protected
|
88
|
+
|
43
89
|
# Define a field attribute for the +Document+.
|
90
|
+
#
|
91
|
+
# @example Set the field.
|
92
|
+
# Person.set_field(:name, :default => "Test")
|
93
|
+
#
|
94
|
+
# @param [ Symbol ] name The name of the field.
|
95
|
+
# @param [ Hash ] options The hash of options.
|
44
96
|
def set_field(name, options = {})
|
45
97
|
meth = options.delete(:as) || name
|
46
98
|
fields[name] = Field.new(name, options)
|
@@ -49,6 +101,16 @@ module Mongoid #:nodoc
|
|
49
101
|
end
|
50
102
|
|
51
103
|
# Create the field accessors.
|
104
|
+
#
|
105
|
+
# @example Generate the accessors.
|
106
|
+
# Person.create_accessors(:name, "name")
|
107
|
+
# person.name #=> returns the field
|
108
|
+
# person.name = "" #=> sets the field
|
109
|
+
# person.name? #=> Is the field present?
|
110
|
+
#
|
111
|
+
# @param [ Symbol ] name The name of the field.
|
112
|
+
# @param [ Symbol ] meth The name of the accessor.
|
113
|
+
# @param [ Hash ] options The options.
|
52
114
|
def create_accessors(name, meth, options = {})
|
53
115
|
generated_field_methods.module_eval do
|
54
116
|
define_method(meth) { read_attribute(name) }
|
@@ -60,11 +122,15 @@ module Mongoid #:nodoc
|
|
60
122
|
end
|
61
123
|
end
|
62
124
|
|
125
|
+
# Include the field methods as a module, so they can be overridden.
|
126
|
+
#
|
127
|
+
# @example Include the fields.
|
128
|
+
# Person.generated_field_methods
|
63
129
|
def generated_field_methods
|
64
130
|
@generated_field_methods ||= begin
|
65
|
-
|
66
|
-
|
67
|
-
|
131
|
+
Module.new.tap do |mod|
|
132
|
+
include mod
|
133
|
+
end
|
68
134
|
end
|
69
135
|
end
|
70
136
|
end
|
data/lib/mongoid/finders.rb
CHANGED
@@ -6,7 +6,7 @@ module Mongoid #:nodoc:
|
|
6
6
|
# criteria.
|
7
7
|
[ :all_in, :any_in, :any_of, :asc, :ascending, :avg, :desc, :descending,
|
8
8
|
:excludes, :limit, :max, :min, :not_in, :only, :order_by,
|
9
|
-
:skip, :sum, :where, :near ].each do |name|
|
9
|
+
:skip, :sum, :where, :update, :update_all, :near ].each do |name|
|
10
10
|
define_method(name) do |*args|
|
11
11
|
criteria.send(name, *args)
|
12
12
|
end
|
data/lib/mongoid/persistence.rb
CHANGED
@@ -86,6 +86,22 @@ module Mongoid #:nodoc:
|
|
86
86
|
Update.new(self, options).persist
|
87
87
|
end
|
88
88
|
|
89
|
+
# Update a single attribute and persist the entire document.
|
90
|
+
# This skips validation but fires the callbacks.
|
91
|
+
#
|
92
|
+
# @example Update the attribute.
|
93
|
+
# person.update_attribute(:title, "Sir")
|
94
|
+
#
|
95
|
+
# @param [ Symbol, String ] name The name of the attribute.
|
96
|
+
# @param [ Object ] value The new value of the attribute.a
|
97
|
+
#
|
98
|
+
# @return [ true, false ] True if save was successfull, false if not.
|
99
|
+
#
|
100
|
+
# @since 2.0.0.rc.6
|
101
|
+
def update_attribute(name, value)
|
102
|
+
write_attribute(name, value) and save(:validate => false)
|
103
|
+
end
|
104
|
+
|
89
105
|
# Update the document attributes in the datbase.
|
90
106
|
#
|
91
107
|
# @example Update the document's attributes
|
data/lib/mongoid/railtie.rb
CHANGED
@@ -67,18 +67,13 @@ module Rails #:nodoc:
|
|
67
67
|
end
|
68
68
|
end
|
69
69
|
|
70
|
-
# After initialization we will
|
71
|
-
#
|
72
|
-
|
73
|
-
initializer "verify that mongoid is configured" do
|
70
|
+
# After initialization we will warn the user if we can't find a mongoid.yml and
|
71
|
+
# alert to create one.
|
72
|
+
initializer "warn when configuration is missing" do
|
74
73
|
config.after_initialize do
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
unless Rails.root.join("config", "mongoid.yml").file?
|
79
|
-
puts "\nMongoid config not found. Create a config file at: config/mongoid.yml"
|
80
|
-
puts "to generate one run: rails generate mongoid:config\n\n"
|
81
|
-
end
|
74
|
+
unless Rails.root.join("config", "mongoid.yml").file?
|
75
|
+
puts "\nMongoid config not found. Create a config file at: config/mongoid.yml"
|
76
|
+
puts "to generate one run: rails generate mongoid:config\n\n"
|
82
77
|
end
|
83
78
|
end
|
84
79
|
end
|
@@ -143,7 +143,7 @@ module Mongoid # :nodoc:
|
|
143
143
|
define_method("#{name}=") do |*args|
|
144
144
|
object, options = args.first, options(args)
|
145
145
|
variable = "@#{name}"
|
146
|
-
if relation_exists?(name)
|
146
|
+
if relation_exists?(name) && !object.is_a?(Hash)
|
147
147
|
set(name, ivar(name).substitute(object, options))
|
148
148
|
else
|
149
149
|
build(name, object, metadata, options.merge(:eager => true))
|
@@ -95,15 +95,15 @@ module Mongoid # :nodoc:
|
|
95
95
|
#
|
96
96
|
# Example:
|
97
97
|
#
|
98
|
-
# <tt>builder.process({ "
|
98
|
+
# <tt>builder.process({ "id" => 1, "street" => "Bond" })
|
99
99
|
#
|
100
100
|
# Options:
|
101
101
|
#
|
102
102
|
# attrs: The single document attributes to process.
|
103
103
|
def process(attrs)
|
104
104
|
return if reject?(attrs)
|
105
|
-
if attrs[:
|
106
|
-
document = existing.find(attrs[:
|
105
|
+
if attrs[:id]
|
106
|
+
document = existing.find(convert_id(attrs[:id]))
|
107
107
|
destroyable?(attrs) ? document.destroy : document.update_attributes(attrs)
|
108
108
|
else
|
109
109
|
existing.push(metadata.klass.new(attrs)) unless destroyable?(attrs)
|
@@ -69,7 +69,7 @@ module Mongoid # :nodoc:
|
|
69
69
|
#
|
70
70
|
# True if the id part of the logic will allow an update.
|
71
71
|
def acceptable_id?
|
72
|
-
id = attributes[:
|
72
|
+
id = convert_id(attributes[:id])
|
73
73
|
existing.id == id || id.nil? || (existing.id != id && update_only?)
|
74
74
|
end
|
75
75
|
|
@@ -83,7 +83,7 @@ module Mongoid # :nodoc:
|
|
83
83
|
#
|
84
84
|
# True if the relation should be deleted.
|
85
85
|
def delete?
|
86
|
-
destroyable? && !attributes[:
|
86
|
+
destroyable? && !attributes[:id].nil?
|
87
87
|
end
|
88
88
|
|
89
89
|
# Can the existing relation potentially be deleted?
|
@@ -351,7 +351,7 @@ module Mongoid # :nodoc:
|
|
351
351
|
#
|
352
352
|
# @return [ Criteria, Object ] A Criteria or return value from the target.
|
353
353
|
def method_missing(name, *args, &block)
|
354
|
-
load! and return super if target.respond_to?(name)
|
354
|
+
load!(:binding => true) and return super if target.respond_to?(name)
|
355
355
|
klass = metadata.klass
|
356
356
|
klass.send(:with_scope, criteria) do
|
357
357
|
klass.send(name, *args)
|
@@ -119,6 +119,26 @@ module Mongoid #:nodoc:
|
|
119
119
|
find_or(:build, attrs)
|
120
120
|
end
|
121
121
|
|
122
|
+
# Gets the document as a serializable hash, used by ActiveModel's JSON and
|
123
|
+
# XML serializers. This override is just to be able to pass the :include
|
124
|
+
# and :except options to get associations in the hash.
|
125
|
+
#
|
126
|
+
# @example Get the serializable hash.
|
127
|
+
# relation.serializable_hash
|
128
|
+
#
|
129
|
+
# @param [ Hash ] options The options to pass.
|
130
|
+
#
|
131
|
+
# @option options [ Symbol ] :include What relations to include
|
132
|
+
# @option options [ Symbol ] :only Limit the fields to only these.
|
133
|
+
# @option options [ Symbol ] :except Dont include these fields.
|
134
|
+
#
|
135
|
+
# @return [ Hash ] The documents, ready to be serialized.
|
136
|
+
#
|
137
|
+
# @since 2.0.0.rc.6
|
138
|
+
def serializable_hash(options = {})
|
139
|
+
target.map { |document| document.serializable_hash(options) }
|
140
|
+
end
|
141
|
+
|
122
142
|
private
|
123
143
|
|
124
144
|
# Get the default options used in binding functions.
|
@@ -47,6 +47,24 @@ module Mongoid # :nodoc:
|
|
47
47
|
def update_only?
|
48
48
|
options[:update_only] || false
|
49
49
|
end
|
50
|
+
|
51
|
+
# Convert an id to its appropriate type.
|
52
|
+
#
|
53
|
+
# @todo Durran: Move this into a common reusable place.
|
54
|
+
#
|
55
|
+
# @example Convert the id.
|
56
|
+
# builder.convert_id("4d371b444835d98b8b000010")
|
57
|
+
#
|
58
|
+
# @param [ String ] id The id, usually coming from the form.
|
59
|
+
#
|
60
|
+
# @return [ BSON::ObjectId, String, Object ] The converted id.
|
61
|
+
#
|
62
|
+
# @since 2.0.0.rc.6
|
63
|
+
def convert_id(id)
|
64
|
+
return nil unless id
|
65
|
+
model = metadata.klass
|
66
|
+
model.using_object_ids? ? BSON::ObjectId.cast!(model, id) : id.class.set(id)
|
67
|
+
end
|
50
68
|
end
|
51
69
|
end
|
52
70
|
end
|
@@ -56,6 +56,41 @@ module Mongoid #:nodoc:
|
|
56
56
|
criteria.count
|
57
57
|
end
|
58
58
|
|
59
|
+
# Creates a new document on the references many relation. This will
|
60
|
+
# save the document if the parent has been persisted.
|
61
|
+
#
|
62
|
+
# @example Create and save the new document.
|
63
|
+
# person.posts.create(:text => "Testing")
|
64
|
+
#
|
65
|
+
# @param [ Hash ] attributes The attributes to create with.
|
66
|
+
# @param [ Class ] type The optional type of document to create.
|
67
|
+
#
|
68
|
+
# @return [ Document ] The newly created document.
|
69
|
+
def create(attributes = nil, type = nil)
|
70
|
+
build(attributes, type).tap do |doc|
|
71
|
+
base.persisted? ? doc.save : raise_unsaved(doc)
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
# Creates a new document on the references many relation. This will
|
76
|
+
# save the document if the parent has been persisted and will raise an
|
77
|
+
# error if validation fails.
|
78
|
+
#
|
79
|
+
# @example Create and save the new document.
|
80
|
+
# person.posts.create!(:text => "Testing")
|
81
|
+
#
|
82
|
+
# @param [ Hash ] attributes The attributes to create with.
|
83
|
+
# @param [ Class ] type The optional type of document to create.
|
84
|
+
#
|
85
|
+
# @raise [ Errors::Validations ] If validation failed.
|
86
|
+
#
|
87
|
+
# @return [ Document ] The newly created document.
|
88
|
+
def create!(attributes = nil, type = nil)
|
89
|
+
build(attributes, type).tap do |doc|
|
90
|
+
base.persisted? ? doc.save! : raise_unsaved(doc)
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
59
94
|
# Deletes all related documents from the database given the supplied
|
60
95
|
# conditions.
|
61
96
|
#
|
@@ -233,7 +268,7 @@ module Mongoid #:nodoc:
|
|
233
268
|
#
|
234
269
|
# @since 2.0.0.rc.1
|
235
270
|
def append(document, options = {})
|
236
|
-
load! and target.push(document)
|
271
|
+
load!(options) and target.push(document)
|
237
272
|
characterize_one(document)
|
238
273
|
binding.bind_one(document, options)
|
239
274
|
end
|
@@ -274,13 +309,28 @@ module Mongoid #:nodoc:
|
|
274
309
|
#
|
275
310
|
# @return [ Criteria, Object ] A Criteria or return value from the target.
|
276
311
|
def method_missing(name, *args, &block)
|
277
|
-
load! and return super if [].respond_to?(name)
|
312
|
+
load!(:binding => true) and return super if [].respond_to?(name)
|
278
313
|
klass = metadata.klass
|
279
314
|
klass.send(:with_scope, criteria) do
|
280
315
|
klass.send(name, *args)
|
281
316
|
end
|
282
317
|
end
|
283
318
|
|
319
|
+
# When the base is not yet saved and the user calls create or create!
|
320
|
+
# on the relation, this error will get raised.
|
321
|
+
#
|
322
|
+
# @example Raise the error.
|
323
|
+
# relation.raise_unsaved(post)
|
324
|
+
#
|
325
|
+
# @param [ Document ] doc The child document getting created.
|
326
|
+
#
|
327
|
+
# @raise [ Errors::UnsavedDocument ] The error.
|
328
|
+
#
|
329
|
+
# @since 2.0.0.rc.6
|
330
|
+
def raise_unsaved(doc)
|
331
|
+
raise Errors::UnsavedDocument.new(base, doc)
|
332
|
+
end
|
333
|
+
|
284
334
|
class << self
|
285
335
|
|
286
336
|
# Return the builder that is responsible for generating the documents
|
@@ -7,6 +7,41 @@ module Mongoid # :nodoc:
|
|
7
7
|
# many-to-many between documents in different collections.
|
8
8
|
class ManyToMany < Referenced::Many
|
9
9
|
|
10
|
+
# Creates a new document on the references many relation. This will
|
11
|
+
# save the document if the parent has been persisted.
|
12
|
+
#
|
13
|
+
# @example Create and save the new document.
|
14
|
+
# person.preferences.create(:text => "Testing")
|
15
|
+
#
|
16
|
+
# @param [ Hash ] attributes The attributes to create with.
|
17
|
+
# @param [ Class ] type The optional type of document to create.
|
18
|
+
#
|
19
|
+
# @return [ Document ] The newly created document.
|
20
|
+
def create(attributes = nil, type = nil)
|
21
|
+
build(attributes, type).tap do |doc|
|
22
|
+
doc.save and base.save if base.persisted?
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
# Creates a new document on the references many relation. This will
|
27
|
+
# save the document if the parent has been persisted and will raise an
|
28
|
+
# error if validation fails.
|
29
|
+
#
|
30
|
+
# @example Create and save the new document.
|
31
|
+
# person.preferences.create!(:text => "Testing")
|
32
|
+
#
|
33
|
+
# @param [ Hash ] attributes The attributes to create with.
|
34
|
+
# @param [ Class ] type The optional type of document to create.
|
35
|
+
#
|
36
|
+
# @raise [ Errors::Validations ] If validation failed.
|
37
|
+
#
|
38
|
+
# @return [ Document ] The newly created document.
|
39
|
+
def create!(attributes = nil, type = nil)
|
40
|
+
build(attributes, type).tap do |doc|
|
41
|
+
doc.save! and base.save! if base.persisted?
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
10
45
|
# Delete a single document from the relation.
|
11
46
|
#
|
12
47
|
# @example Delete a document.
|
data/lib/mongoid/safety.rb
CHANGED
@@ -199,7 +199,7 @@ module Mongoid #:nodoc:
|
|
199
199
|
def update_attributes!(attributes = {})
|
200
200
|
target.write_attributes(attributes)
|
201
201
|
update(:safe => safety_options).tap do |result|
|
202
|
-
target.class.fail_validate!(
|
202
|
+
target.class.fail_validate!(target) unless result
|
203
203
|
end
|
204
204
|
end
|
205
205
|
end
|
@@ -0,0 +1,99 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module Mongoid # :nodoc:
|
3
|
+
|
4
|
+
# This module provides the extra behaviour for including relations in JSON
|
5
|
+
# and XML serialization.
|
6
|
+
module Serialization
|
7
|
+
extend ActiveSupport::Concern
|
8
|
+
include ActiveModel::Serialization
|
9
|
+
|
10
|
+
# Gets the document as a serializable hash, used by ActiveModel's JSON and
|
11
|
+
# XML serializers. This override is just to be able to pass the :include
|
12
|
+
# and :except options to get associations in the hash.
|
13
|
+
#
|
14
|
+
# @example Get the serializable hash.
|
15
|
+
# document.serializable_hash
|
16
|
+
#
|
17
|
+
# @example Get the serializable hash with options.
|
18
|
+
# document.serializable_hash(:include => :addresses)
|
19
|
+
#
|
20
|
+
# @param [ Hash ] options The options to pass.
|
21
|
+
#
|
22
|
+
# @option options [ Symbol ] :include What relations to include
|
23
|
+
# @option options [ Symbol ] :only Limit the fields to only these.
|
24
|
+
# @option options [ Symbol ] :except Dont include these fields.
|
25
|
+
#
|
26
|
+
# @return [ Hash ] The document, ready to be serialized.
|
27
|
+
#
|
28
|
+
# @since 2.0.0.rc.6
|
29
|
+
def serializable_hash(options = nil)
|
30
|
+
options ||= {}
|
31
|
+
super(options).tap do |attrs|
|
32
|
+
serialize_relations(attrs, options) if options[:include]
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
private
|
37
|
+
|
38
|
+
# For each of the provided include options, get the relation needed and
|
39
|
+
# provide it in the hash.
|
40
|
+
#
|
41
|
+
# @example Serialize the included relations.
|
42
|
+
# document.serialize_relations({}, :include => :addresses)
|
43
|
+
#
|
44
|
+
# @param [ Hash ] attributes The attributes to serialize.
|
45
|
+
# @param [ Hash ] options The serialization options.
|
46
|
+
#
|
47
|
+
# @option options [ Symbol ] :include What relations to include
|
48
|
+
# @option options [ Symbol ] :only Limit the fields to only these.
|
49
|
+
# @option options [ Symbol ] :except Dont include these fields.
|
50
|
+
#
|
51
|
+
# @since 2.0.0.rc.6
|
52
|
+
def serialize_relations(attributes = {}, options = {})
|
53
|
+
inclusions = options.delete(:include)
|
54
|
+
relation_names(inclusions).each do |name|
|
55
|
+
metadata = relations[name.to_s]
|
56
|
+
relation = send(metadata.name, false, :eager => true)
|
57
|
+
if relation
|
58
|
+
attributes[metadata.name.to_s] =
|
59
|
+
relation.serializable_hash(relation_options(inclusions, options, name))
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
# Since the inclusions can be a hash, symbol, or array of symbols, this is
|
65
|
+
# provided as a convenience to parse out the names.
|
66
|
+
#
|
67
|
+
# @example Get the relation names.
|
68
|
+
# document.relation_names(:include => [ :addresses ])
|
69
|
+
#
|
70
|
+
# @param [ Hash, Symbol, Array<Symbol ] inclusions The inclusions.
|
71
|
+
#
|
72
|
+
# @return [ Array<Symbol> ] The names of the included relations.
|
73
|
+
#
|
74
|
+
# @since 2.0.0.rc.6
|
75
|
+
def relation_names(inclusions)
|
76
|
+
inclusions.is_a?(Hash) ? inclusions.keys : Array.wrap(inclusions)
|
77
|
+
end
|
78
|
+
|
79
|
+
# Since the inclusions can be a hash, symbol, or array of symbols, this is
|
80
|
+
# provided as a convenience to parse out the options.
|
81
|
+
#
|
82
|
+
# @example Get the relation options.
|
83
|
+
# document.relation_names(:include => [ :addresses ])
|
84
|
+
#
|
85
|
+
# @param [ Hash, Symbol, Array<Symbol ] inclusions The inclusions.
|
86
|
+
# @param [ Symbol ] name The name of the relation.
|
87
|
+
#
|
88
|
+
# @return [ Hash ] The options for the relation.
|
89
|
+
#
|
90
|
+
# @since 2.0.0.rc.6
|
91
|
+
def relation_options(inclusions, options, name)
|
92
|
+
if inclusions.is_a?(Hash)
|
93
|
+
inclusions[name]
|
94
|
+
else
|
95
|
+
{ :except => options[:except], :only => options[:only] }
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
data/lib/mongoid/timestamps.rb
CHANGED
@@ -13,7 +13,7 @@ module Mongoid #:nodoc:
|
|
13
13
|
set_callback :create, :before, :set_created_at
|
14
14
|
set_callback :save, :before, :set_updated_at
|
15
15
|
|
16
|
-
|
16
|
+
class_attribute :record_timestamps
|
17
17
|
self.record_timestamps = true
|
18
18
|
end
|
19
19
|
|
data/lib/mongoid/validations.rb
CHANGED
@@ -8,46 +8,57 @@ module Mongoid #:nodoc:
|
|
8
8
|
# provide: validates_associated and validates_uniqueness_of.
|
9
9
|
module Validations
|
10
10
|
extend ActiveSupport::Concern
|
11
|
+
include ActiveModel::Validations
|
11
12
|
|
12
|
-
|
13
|
-
include ActiveModel::Validations
|
13
|
+
attr_accessor :validated
|
14
14
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
def read_attribute_for_validation(attr)
|
33
|
-
if relations[attr.to_s]
|
34
|
-
send(attr, false, :continue => false, :eager => true)
|
35
|
-
else
|
36
|
-
send(attr)
|
37
|
-
end
|
15
|
+
# Overrides the default ActiveModel behaviour since we need to handle
|
16
|
+
# validations of relations slightly different than just calling the
|
17
|
+
# getter.
|
18
|
+
#
|
19
|
+
# @example Read the value.
|
20
|
+
# person.read_attribute_for_validation(:addresses)
|
21
|
+
#
|
22
|
+
# @param [ Symbol ] attr The name of the field or relation.
|
23
|
+
#
|
24
|
+
# @return [ Object ] The value of the field or the relation.
|
25
|
+
#
|
26
|
+
# @since 2.0.0.rc.1
|
27
|
+
def read_attribute_for_validation(attr)
|
28
|
+
if relations[attr.to_s]
|
29
|
+
send(attr, false, :eager => true)
|
30
|
+
else
|
31
|
+
send(attr)
|
38
32
|
end
|
33
|
+
end
|
39
34
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
35
|
+
# Determine if the document is valid.
|
36
|
+
#
|
37
|
+
# @example Is the document valid?
|
38
|
+
# person.valid?
|
39
|
+
#
|
40
|
+
# @example Is the document valid in a context?
|
41
|
+
# person.valid?(:create)
|
42
|
+
#
|
43
|
+
# @param [ Symbol ] context The optional validation context.
|
44
|
+
#
|
45
|
+
# @return [ true, false ] True if valid, false if not.
|
46
|
+
#
|
47
|
+
# @since 2.0.0.rc.6
|
48
|
+
def valid?(context = nil)
|
49
|
+
super context ? context : (new? ? :create : :update)
|
50
|
+
end
|
51
|
+
|
52
|
+
# Used to prevent infinite loops in associated validations.
|
53
|
+
#
|
54
|
+
# @example Is the document validated?
|
55
|
+
# document.validated?
|
56
|
+
#
|
57
|
+
# @return [ true, false ] Has the document already been validated?
|
58
|
+
#
|
59
|
+
# @since 2.0.0.rc.2
|
60
|
+
def validated?
|
61
|
+
!!@validated
|
51
62
|
end
|
52
63
|
|
53
64
|
module ClassMethods #:nodoc:
|
data/lib/mongoid/version.rb
CHANGED
metadata
CHANGED
@@ -7,8 +7,8 @@ version: !ruby/object:Gem::Version
|
|
7
7
|
- 0
|
8
8
|
- 0
|
9
9
|
- rc
|
10
|
-
-
|
11
|
-
version: 2.0.0.rc.
|
10
|
+
- 6
|
11
|
+
version: 2.0.0.rc.6
|
12
12
|
platform: ruby
|
13
13
|
authors:
|
14
14
|
- Durran Jordan
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2011-01-
|
19
|
+
date: 2011-01-19 00:00:00 +01:00
|
20
20
|
default_executable:
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
@@ -72,9 +72,8 @@ dependencies:
|
|
72
72
|
- !ruby/object:Gem::Version
|
73
73
|
segments:
|
74
74
|
- 1
|
75
|
-
-
|
76
|
-
|
77
|
-
version: 1.1.5
|
75
|
+
- 2
|
76
|
+
version: "1.2"
|
78
77
|
type: :runtime
|
79
78
|
prerelease: false
|
80
79
|
version_requirements: *id004
|
@@ -87,9 +86,8 @@ dependencies:
|
|
87
86
|
- !ruby/object:Gem::Version
|
88
87
|
segments:
|
89
88
|
- 1
|
90
|
-
-
|
91
|
-
|
92
|
-
version: 1.1.5
|
89
|
+
- 2
|
90
|
+
version: "1.2"
|
93
91
|
type: :development
|
94
92
|
prerelease: false
|
95
93
|
version_requirements: *id005
|
@@ -201,6 +199,7 @@ files:
|
|
201
199
|
- lib/mongoid/errors/invalid_type.rb
|
202
200
|
- lib/mongoid/errors/mongoid_error.rb
|
203
201
|
- lib/mongoid/errors/too_many_nested_attribute_records.rb
|
202
|
+
- lib/mongoid/errors/unsaved_document.rb
|
204
203
|
- lib/mongoid/errors/unsupported_version.rb
|
205
204
|
- lib/mongoid/errors/validations.rb
|
206
205
|
- lib/mongoid/errors.rb
|
@@ -324,6 +323,7 @@ files:
|
|
324
323
|
- lib/mongoid/safe.rb
|
325
324
|
- lib/mongoid/safety.rb
|
326
325
|
- lib/mongoid/scope.rb
|
326
|
+
- lib/mongoid/serialization.rb
|
327
327
|
- lib/mongoid/state.rb
|
328
328
|
- lib/mongoid/timestamps.rb
|
329
329
|
- lib/mongoid/validations/associated.rb
|
@@ -338,7 +338,7 @@ files:
|
|
338
338
|
- lib/rails/generators/mongoid/model/templates/model.rb
|
339
339
|
- lib/rails/generators/mongoid_generator.rb
|
340
340
|
- lib/rails/mongoid.rb
|
341
|
-
-
|
341
|
+
- LICENSE
|
342
342
|
- README.rdoc
|
343
343
|
- Rakefile
|
344
344
|
has_rdoc: true
|
@@ -355,7 +355,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
355
355
|
requirements:
|
356
356
|
- - ">="
|
357
357
|
- !ruby/object:Gem::Version
|
358
|
-
hash:
|
358
|
+
hash: 1229276417221731393
|
359
359
|
segments:
|
360
360
|
- 0
|
361
361
|
version: "0"
|