mongoid-eager-loading 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +13 -12
- data/README.md +12 -10
- data/benchmark/benchmark.rb +11 -4
- data/lib/mongoid-eager-loading.rb +1 -6
- data/lib/mongoid-eager-loading/mongoid/criterion/eager_loading.rb +36 -36
- data/lib/mongoid-eager-loading/version.rb +1 -1
- data/mongoid-eager-loading.gemspec +4 -3
- data/spec/models/account.rb +11 -5
- data/spec/models/address.rb +8 -1
- data/spec/models/address_component.rb +5 -0
- data/spec/models/agent.rb +2 -3
- data/spec/models/animal.rb +8 -5
- data/spec/models/answer.rb +1 -1
- data/spec/models/bar.rb +5 -0
- data/spec/models/book.rb +5 -0
- data/spec/models/business.rb +7 -0
- data/spec/models/callbacks.rb +2 -2
- data/spec/models/category.rb +3 -3
- data/spec/models/country_code.rb +1 -1
- data/spec/models/description.rb +3 -0
- data/spec/models/drug.rb +5 -0
- data/spec/models/favorite.rb +1 -3
- data/spec/models/fruits.rb +11 -0
- data/spec/models/game.rb +2 -1
- data/spec/models/house.rb +4 -0
- data/spec/models/inheritance.rb +19 -4
- data/spec/models/location.rb +1 -1
- data/spec/models/membership.rb +4 -0
- data/spec/models/movie.rb +5 -0
- data/spec/models/name.rb +1 -1
- data/spec/models/page.rb +5 -0
- data/spec/models/page_question.rb +4 -0
- data/spec/models/paranoid_post.rb +1 -1
- data/spec/models/parents.rb +1 -1
- data/spec/models/patient.rb +2 -2
- data/spec/models/person.rb +27 -12
- data/spec/models/pet.rb +1 -1
- data/spec/models/pet_owner.rb +1 -1
- data/spec/models/phone.rb +1 -1
- data/spec/models/post.rb +6 -4
- data/spec/models/preference.rb +2 -1
- data/spec/models/question.rb +3 -3
- data/spec/models/quiz.rb +4 -0
- data/spec/models/rating.rb +6 -0
- data/spec/models/role.rb +5 -0
- data/spec/models/shelf.rb +5 -0
- data/spec/models/slave_address_numbers.rb +14 -0
- data/spec/models/survey.rb +1 -2
- data/spec/models/tracking_id_validation_history.rb +25 -0
- data/spec/models/translation.rb +1 -1
- data/spec/models/user.rb +3 -2
- data/spec/models/user_account.rb +3 -2
- data/spec/models/vet_visit.rb +1 -1
- data/spec/models/video.rb +1 -1
- data/spec/models/wiki_page.rb +6 -0
- data/spec/mongoid-eager-loading/mongoid/criterion/eager_loading_spec.rb +19 -0
- data/spec/spec_helper.rb +1 -1
- metadata +93 -59
data/spec/models/country_code.rb
CHANGED
data/spec/models/description.rb
CHANGED
data/spec/models/drug.rb
ADDED
data/spec/models/favorite.rb
CHANGED
data/spec/models/game.rb
CHANGED
@@ -4,11 +4,12 @@ class Game
|
|
4
4
|
field :score, :type => Integer, :default => 0
|
5
5
|
field :name
|
6
6
|
referenced_in :person, :index => true
|
7
|
+
accepts_nested_attributes_for :person
|
7
8
|
enslave and cache
|
8
9
|
|
9
10
|
attr_protected :_id
|
10
11
|
|
11
12
|
set_callback(:initialize, :after) do |document|
|
12
|
-
write_attribute("name", "Testing")
|
13
|
+
write_attribute("name", "Testing") unless name
|
13
14
|
end
|
14
15
|
end
|
data/spec/models/inheritance.rb
CHANGED
@@ -25,7 +25,7 @@ class Shape
|
|
25
25
|
field :x, :type => Integer, :default => 0
|
26
26
|
field :y, :type => Integer, :default => 0
|
27
27
|
|
28
|
-
embedded_in :canvas
|
28
|
+
embedded_in :canvas
|
29
29
|
|
30
30
|
def render; end
|
31
31
|
end
|
@@ -43,7 +43,7 @@ class Writer
|
|
43
43
|
include Mongoid::Document
|
44
44
|
field :speed, :type => Integer, :default => 0
|
45
45
|
|
46
|
-
embedded_in :canvas
|
46
|
+
embedded_in :canvas
|
47
47
|
|
48
48
|
def write; end
|
49
49
|
end
|
@@ -58,15 +58,30 @@ end
|
|
58
58
|
|
59
59
|
class Palette
|
60
60
|
include Mongoid::Document
|
61
|
-
embedded_in :canvas
|
61
|
+
embedded_in :canvas
|
62
62
|
embeds_many :tools
|
63
63
|
end
|
64
64
|
|
65
65
|
class Tool
|
66
66
|
include Mongoid::Document
|
67
|
-
embedded_in :palette
|
67
|
+
embedded_in :palette
|
68
68
|
end
|
69
69
|
|
70
70
|
class Pencil < Tool; end
|
71
71
|
|
72
72
|
class Eraser < Tool; end
|
73
|
+
|
74
|
+
########################################
|
75
|
+
# These are for references relationships
|
76
|
+
########################################
|
77
|
+
class ShippingContainer
|
78
|
+
include Mongoid::Document
|
79
|
+
references_many :vehicles
|
80
|
+
end
|
81
|
+
class Vehicle
|
82
|
+
include Mongoid::Document
|
83
|
+
referenced_in :shipping_container
|
84
|
+
end
|
85
|
+
class Car < Vehicle; end
|
86
|
+
class Truck < Vehicle; end
|
87
|
+
|
data/spec/models/location.rb
CHANGED
data/spec/models/name.rb
CHANGED
@@ -5,7 +5,7 @@ class Name
|
|
5
5
|
field :parent_title
|
6
6
|
key :first_name, :last_name
|
7
7
|
embeds_many :translations
|
8
|
-
embedded_in :namable, :
|
8
|
+
embedded_in :namable, :polymorphic => true
|
9
9
|
|
10
10
|
def set_parent=(set = false)
|
11
11
|
self.parent_title = namable.title if set
|
data/spec/models/page.rb
ADDED
data/spec/models/parents.rb
CHANGED
data/spec/models/patient.rb
CHANGED
@@ -2,14 +2,14 @@ class Email
|
|
2
2
|
include Mongoid::Document
|
3
3
|
field :address
|
4
4
|
validates_uniqueness_of :address
|
5
|
-
embedded_in :patient
|
5
|
+
embedded_in :patient
|
6
6
|
end
|
7
7
|
|
8
8
|
class Patient
|
9
9
|
include Mongoid::Document
|
10
10
|
field :title
|
11
11
|
store_in :inpatient
|
12
|
-
embeds_many :addresses
|
12
|
+
embeds_many :addresses, :as => :addressable
|
13
13
|
embeds_one :email
|
14
14
|
validates_presence_of :title, :on => :create
|
15
15
|
end
|
data/spec/models/person.rb
CHANGED
@@ -21,6 +21,7 @@ class Person
|
|
21
21
|
field :owner_id, :type => Integer
|
22
22
|
field :security_code
|
23
23
|
field :reading, :type => Object
|
24
|
+
field :bson_id, :type => BSON::ObjectId
|
24
25
|
|
25
26
|
index :age
|
26
27
|
index :addresses
|
@@ -33,10 +34,10 @@ class Person
|
|
33
34
|
|
34
35
|
attr_protected :security_code, :owner_id
|
35
36
|
|
36
|
-
embeds_many :favorites
|
37
|
-
embeds_many :videos
|
38
|
-
embeds_many :phone_numbers, :class_name => "Phone"
|
39
|
-
embeds_many :addresses do
|
37
|
+
embeds_many :favorites, :order => :title.desc, :validate => false, :inverse_of => :perp
|
38
|
+
embeds_many :videos, :order => [[ :title, :asc ]], :validate => false
|
39
|
+
embeds_many :phone_numbers, :class_name => "Phone", :validate => false
|
40
|
+
embeds_many :addresses, :as => :addressable, :validate => false do
|
40
41
|
def extension
|
41
42
|
"Testing"
|
42
43
|
end
|
@@ -44,9 +45,10 @@ class Person
|
|
44
45
|
@target.select { |doc| doc.street == street }
|
45
46
|
end
|
46
47
|
end
|
48
|
+
embeds_many :address_components, :validate => false
|
47
49
|
|
48
|
-
embeds_one :pet, :class_name => "Animal"
|
49
|
-
embeds_one :name do
|
50
|
+
embeds_one :pet, :class_name => "Animal", :validate => false
|
51
|
+
embeds_one :name, :as => :namable, :validate => false do
|
50
52
|
def extension
|
51
53
|
"Testing"
|
52
54
|
end
|
@@ -55,26 +57,39 @@ class Person
|
|
55
57
|
end
|
56
58
|
end
|
57
59
|
|
58
|
-
accepts_nested_attributes_for :addresses
|
60
|
+
accepts_nested_attributes_for :addresses
|
59
61
|
accepts_nested_attributes_for :name, :update_only => true
|
60
62
|
accepts_nested_attributes_for :pet, :allow_destroy => true
|
61
63
|
accepts_nested_attributes_for :game, :allow_destroy => true
|
62
64
|
accepts_nested_attributes_for :favorites, :allow_destroy => true, :limit => 5
|
65
|
+
accepts_nested_attributes_for :posts
|
66
|
+
accepts_nested_attributes_for :preferences
|
63
67
|
|
64
|
-
references_one :game, :dependent => :destroy do
|
68
|
+
references_one :game, :dependent => :destroy, :validate => false do
|
65
69
|
def extension
|
66
70
|
"Testing"
|
67
71
|
end
|
68
72
|
end
|
69
73
|
|
70
|
-
references_many
|
74
|
+
references_many \
|
75
|
+
:posts,
|
76
|
+
:dependent => :delete,
|
77
|
+
:validate => :false,
|
78
|
+
:default_order => :created_at.desc do
|
71
79
|
def extension
|
72
80
|
"Testing"
|
73
81
|
end
|
74
82
|
end
|
75
|
-
references_many :paranoid_posts
|
76
|
-
|
77
|
-
|
83
|
+
references_many :paranoid_posts, :validate => false
|
84
|
+
references_and_referenced_in_many \
|
85
|
+
:preferences,
|
86
|
+
:index => true,
|
87
|
+
:dependent => :nullify
|
88
|
+
references_and_referenced_in_many :user_accounts
|
89
|
+
references_and_referenced_in_many :houses
|
90
|
+
|
91
|
+
references_many :drugs, :autosave => true
|
92
|
+
references_one :account, :autosave => true
|
78
93
|
|
79
94
|
def score_with_rescoring=(score)
|
80
95
|
@rescored = score.to_i + 20
|
data/spec/models/pet.rb
CHANGED
data/spec/models/pet_owner.rb
CHANGED
data/spec/models/phone.rb
CHANGED
data/spec/models/post.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
class Tag
|
2
2
|
include Mongoid::Document
|
3
3
|
field :text
|
4
|
-
|
4
|
+
references_and_referenced_in_many :posts
|
5
5
|
end
|
6
6
|
|
7
7
|
class Post
|
@@ -9,13 +9,15 @@ class Post
|
|
9
9
|
include Mongoid::Versioning
|
10
10
|
include Mongoid::Timestamps
|
11
11
|
field :title
|
12
|
+
field :content
|
12
13
|
referenced_in :person
|
13
14
|
referenced_in :author, :foreign_key => :author_id, :class_name => "User"
|
14
|
-
|
15
|
+
references_and_referenced_in_many :tags
|
15
16
|
|
16
|
-
|
17
|
+
scope :recent, where(:created_at => { "$lt" => Time.now, "$gt" => 30.days.ago })
|
18
|
+
scope :posting, where(:content.in => [ "Posting" ])
|
17
19
|
|
18
|
-
|
20
|
+
validates_format_of :title, :without => /\$\$\$/
|
19
21
|
|
20
22
|
class << self
|
21
23
|
def old
|
data/spec/models/preference.rb
CHANGED
@@ -2,6 +2,7 @@ class Preference
|
|
2
2
|
include Mongoid::Document
|
3
3
|
field :name
|
4
4
|
field :value
|
5
|
-
|
5
|
+
references_and_referenced_in_many :people
|
6
6
|
validates_length_of :name, :minimum => 2, :allow_nil => true
|
7
|
+
scope :posting, where(:value.in => [ "Posting" ])
|
7
8
|
end
|
data/spec/models/question.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
class Question
|
2
2
|
include Mongoid::Document
|
3
3
|
field :content
|
4
|
-
embedded_in :survey
|
4
|
+
embedded_in :survey
|
5
5
|
embeds_many :answers
|
6
|
-
|
6
|
+
|
7
7
|
accepts_nested_attributes_for :answers, :reject_if => lambda { |a| a[:content].blank? }, :allow_destroy => true
|
8
|
-
end
|
8
|
+
end
|
data/spec/models/quiz.rb
ADDED
data/spec/models/role.rb
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
# These models used for Github 263
|
2
|
+
class Slave
|
3
|
+
include Mongoid::Document
|
4
|
+
field :first_name
|
5
|
+
field :last_name
|
6
|
+
embeds_many :address_numbers
|
7
|
+
end
|
8
|
+
|
9
|
+
class AddressNumber
|
10
|
+
include Mongoid::Document
|
11
|
+
field :country_code, :type => Integer, :default => 1
|
12
|
+
field :number
|
13
|
+
embedded_in :slave
|
14
|
+
end
|
data/spec/models/survey.rb
CHANGED
@@ -0,0 +1,25 @@
|
|
1
|
+
# These models are spcific to test for Github #313.
|
2
|
+
module MyCompany
|
3
|
+
module Model
|
4
|
+
class TrackingId
|
5
|
+
include Mongoid::Document
|
6
|
+
include Mongoid::Timestamps
|
7
|
+
store_in :tracking_ids
|
8
|
+
embeds_many :validation_history, :class_name => "MyCompany::Model::TrackingIdValidationHistory"
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
module MyCompany
|
14
|
+
module Model
|
15
|
+
# A TrackingId validation state change
|
16
|
+
class TrackingIdValidationHistory
|
17
|
+
include Mongoid::Document
|
18
|
+
field :old_state, :type => String
|
19
|
+
field :new_state, :type => String
|
20
|
+
field :when_changed, :type => DateTime
|
21
|
+
attr_protected :_id
|
22
|
+
embedded_in :tracking_id, :class_name => "MyCompany::Model::TrackingId"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
data/spec/models/translation.rb
CHANGED
data/spec/models/user.rb
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
class User
|
2
2
|
include Mongoid::Document
|
3
|
-
|
4
|
-
references_many :posts, :foreign_key => :author_id, :inverse_of => :author
|
3
|
+
|
5
4
|
field :name
|
6
5
|
|
6
|
+
references_one :account, :foreign_key => :creator_id
|
7
|
+
references_many :posts, :foreign_key => :author_id
|
7
8
|
references_many :descriptions
|
8
9
|
end
|