mongoid_max_denormalize 0.0.1 → 0.0.2

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.
data/README.md CHANGED
@@ -9,6 +9,8 @@ For now, support only Mongoid 3.
9
9
  * Propagate only when needed
10
10
  * Take advantage of atomic operations on multi documents of MongoDB
11
11
 
12
+ *This is a pre-version not suitable for production.*
13
+
12
14
 
13
15
 
14
16
  ## Installation
@@ -29,29 +31,33 @@ Or install with RubyGems:
29
31
 
30
32
  Add `include Mongoid::Max::Denormalize` in your model and also:
31
33
 
32
- denormalize relation, field_1, field_2 ... field_n, options
34
+ denormalize relation, field_1, field_2 ... field_n, options
33
35
 
34
36
 
35
37
  ### One to Many
36
38
 
37
- Supported fields: normal Mongoid fields, and methods.
39
+ **Supported fields:** normal Mongoid fields, and methods.
38
40
 
39
- Supported options: none.
41
+ **Supported options:** none.
40
42
 
41
43
  Example :
42
44
 
43
45
  class Post
44
46
  include Mongoid::Document
47
+
45
48
  field :title
49
+
46
50
  def slug
47
51
  title.try(:parameterize)
48
52
  end
53
+
49
54
  has_many :comments
50
55
  end
51
56
 
52
57
  class Comment
53
58
  include Mongoid::Document
54
59
  include Mongoid::Max::Denormalize
60
+
55
61
  belons_to :post
56
62
  denormalize :post, :title, :slug
57
63
  end
@@ -60,7 +66,7 @@ Example :
60
66
  @comment = @post.comments.create
61
67
  @comment.post_title #=> "Mush from the Wimp"
62
68
  @comment.post_slug #=> "mush-from-the-wimp"
63
- #
69
+
64
70
  @post.update_attributes(:title => "All Must Share The Burden")
65
71
  @comment.reload # to reload the comment from the DB
66
72
  @comment.post_title #=> "All Must Share The Burden"
@@ -90,9 +96,9 @@ This is better :
90
96
 
91
97
  ### Many to One
92
98
 
93
- Supported fields: **only** normal Mongoid fields (no methods)
99
+ **Supported fields:** *only* normal Mongoid fields (no methods)
94
100
 
95
- Supported options:
101
+ **Supported options:**
96
102
 
97
103
  * `:count => true` : to keep a count !
98
104
 
@@ -102,13 +108,16 @@ Example :
102
108
  class Post
103
109
  include Mongoid::Document
104
110
  include Mongoid::Max::Denormalize
111
+
105
112
  has_many :comments
106
113
  denormalize :comments, :rating, :stuff, :count => true
107
114
  end
108
115
 
109
116
  class Comment
110
117
  include Mongoid::Document
118
+
111
119
  belons_to :post
120
+
112
121
  field :rating
113
122
  field :stuff
114
123
  end
@@ -117,9 +126,9 @@ Example :
117
126
  @comment = @post.comments.create(:rating => 5, :stuff => "A")
118
127
  @comment = @post.comments.create(:rating => 3, :stuff => "B")
119
128
  @post.reload
120
- @post.comments_count #=> 2
129
+ @post.comments_count #=> 2
121
130
  @post.comments_rating #=> [5, 3]
122
- @post.comments_stuff #=> ["A", "B"]
131
+ @post.comments_stuff #=> ["A", "B"]
123
132
 
124
133
  You can see that each denormalized field in stored in a separate array. This is wanted.
125
134
  An option `:group` will come to allow :
@@ -203,7 +203,6 @@ EOM
203
203
  end
204
204
  EOM
205
205
  meta.klass.class_eval callback_code
206
- puts callback_code
207
206
  end
208
207
 
209
208
  def has_count?
@@ -4,7 +4,7 @@ module Mongoid
4
4
  module Denormalize
5
5
  module Version
6
6
 
7
- STRING = '0.0.1'
7
+ STRING = '0.0.2'
8
8
 
9
9
  end
10
10
  end
@@ -0,0 +1,61 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+
4
+ #
5
+ # The case
6
+ #
7
+ class Author
8
+ include Mongoid::Document
9
+
10
+ field :name, type: String
11
+
12
+ has_many :books
13
+ end
14
+
15
+ class Book
16
+ include Mongoid::Document
17
+ include Mongoid::Max::Denormalize
18
+
19
+ field :name, type: String
20
+
21
+ belongs_to :author
22
+
23
+ has_many :reviews
24
+ end
25
+
26
+ class Review
27
+ include Mongoid::Document
28
+ include Mongoid::Max::Denormalize
29
+
30
+ belongs_to :book
31
+
32
+ field :rating, type: Integer
33
+ end
34
+
35
+ #
36
+ # The specs
37
+ #
38
+ describe "Case: Existing" do
39
+
40
+ before do
41
+ @author = Author.create!(name: "Michael Crichton")
42
+ @book = Book.create!(name: "Jurassic Park", author: @author)
43
+ @review_1 = Review.create!(book: @book, rating: 4)
44
+ @review_2 = Review.create!(book: @book, rating: 5)
45
+ end
46
+
47
+ context "when defining the denormalization" do
48
+ before do
49
+ Book.denormalize :author, :name
50
+ Book.denormalize :reviews, :rating, :count => true
51
+ Review.denormalize :book, :name
52
+ end
53
+
54
+ it "denormalization should be empty" do
55
+
56
+ end
57
+
58
+ end
59
+
60
+ end
61
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongoid_max_denormalize
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -94,6 +94,7 @@ files:
94
94
  - lib/mongoid/max/denormalize/base.rb
95
95
  - lib/mongoid/max/denormalize.rb
96
96
  - spec/lib/mongoid_max_denormalize_spec.rb
97
+ - spec/cases/existing_spec.rb
97
98
  - spec/cases/contact_and_addresses_spec.rb
98
99
  - spec/cases/post_and_comments_spec.rb
99
100
  - spec/cases/song_and_notes_spec.rb
@@ -124,6 +125,7 @@ specification_version: 3
124
125
  summary: MaxMapper, polyvalent ORM for Rails
125
126
  test_files:
126
127
  - spec/lib/mongoid_max_denormalize_spec.rb
128
+ - spec/cases/existing_spec.rb
127
129
  - spec/cases/contact_and_addresses_spec.rb
128
130
  - spec/cases/post_and_comments_spec.rb
129
131
  - spec/cases/song_and_notes_spec.rb