mongoid_orderable 0.9.1 → 1.0.0
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 +3 -2
- data/Rakefile +3 -0
- data/lib/mongoid/orderable.rb +5 -8
- data/lib/mongoid_orderable/version.rb +1 -1
- data/spec/mongoid/orderable_spec.rb +21 -2
- metadata +6 -6
data/README.md
CHANGED
@@ -14,8 +14,7 @@ Mongoid::Orderable is a ordered list implementation for your mongoid models.
|
|
14
14
|
gem 'mongoid_orderable'
|
15
15
|
```
|
16
16
|
|
17
|
-
Gem has the same api as others. Just include Mongoid::Orderable into your model.
|
18
|
-
Also you can initialize orderable manually and specify `:scope` or `:column` options:
|
17
|
+
Gem has the same api as others. Just include Mongoid::Orderable into your model and call `orderable` method.
|
19
18
|
|
20
19
|
```
|
21
20
|
class Item
|
@@ -24,8 +23,10 @@ class Item
|
|
24
23
|
|
25
24
|
# belongs_to :group
|
26
25
|
|
26
|
+
# orderable
|
27
27
|
# orderable :scope => :group, :column => :pos
|
28
28
|
# orderable :scope => lambda { |document| where(:group_id => document.group_id) }
|
29
|
+
# orderable :index => false # this one if you want specify indexes manually
|
29
30
|
end
|
30
31
|
```
|
31
32
|
|
data/Rakefile
CHANGED
data/lib/mongoid/orderable.rb
CHANGED
@@ -1,23 +1,20 @@
|
|
1
1
|
module Mongoid::Orderable
|
2
2
|
extend ActiveSupport::Concern
|
3
3
|
|
4
|
-
included do
|
5
|
-
orderable
|
6
|
-
end
|
7
|
-
|
8
4
|
module ClassMethods
|
9
5
|
def orderable options = {}
|
10
6
|
configuration = {
|
11
7
|
:column => :position,
|
8
|
+
:index => true,
|
12
9
|
:scope => nil
|
13
10
|
}
|
14
11
|
|
15
|
-
configuration.
|
16
|
-
field configuration[:column], :type => Integer
|
17
|
-
index configuration[:column]
|
18
|
-
|
12
|
+
configuration.merge! options if options.is_a?(Hash)
|
19
13
|
configuration[:scope] = "#{configuration[:scope]}_id".to_sym if configuration[:scope].is_a?(Symbol) && configuration[:scope].to_s !~ /_id$/
|
20
14
|
|
15
|
+
field configuration[:column], :type => Integer
|
16
|
+
index configuration[:column] if configuration[:index]
|
17
|
+
|
21
18
|
case configuration[:scope]
|
22
19
|
when Symbol then
|
23
20
|
scope :orderable_scope, lambda { |document| where(configuration[:scope] => document.send(configuration[:scope])) }
|
@@ -4,6 +4,8 @@ describe Mongoid::Orderable do
|
|
4
4
|
class SimpleOrderable
|
5
5
|
include Mongoid::Document
|
6
6
|
include Mongoid::Orderable
|
7
|
+
|
8
|
+
orderable
|
7
9
|
end
|
8
10
|
|
9
11
|
class ScopedGroup
|
@@ -21,8 +23,6 @@ describe Mongoid::Orderable do
|
|
21
23
|
orderable :scope => :group
|
22
24
|
end
|
23
25
|
|
24
|
-
|
25
|
-
|
26
26
|
class EmbedsOrderable
|
27
27
|
include Mongoid::Document
|
28
28
|
|
@@ -34,6 +34,8 @@ describe Mongoid::Orderable do
|
|
34
34
|
include Mongoid::Orderable
|
35
35
|
|
36
36
|
embedded_in :embeds_orderable
|
37
|
+
|
38
|
+
orderable
|
37
39
|
end
|
38
40
|
|
39
41
|
class CustomizedOrderable
|
@@ -43,6 +45,13 @@ describe Mongoid::Orderable do
|
|
43
45
|
orderable :column => :pos
|
44
46
|
end
|
45
47
|
|
48
|
+
class NoIndexOrderable
|
49
|
+
include Mongoid::Document
|
50
|
+
include Mongoid::Orderable
|
51
|
+
|
52
|
+
orderable :index => false
|
53
|
+
end
|
54
|
+
|
46
55
|
describe SimpleOrderable do
|
47
56
|
before :each do
|
48
57
|
SimpleOrderable.delete_all
|
@@ -60,6 +69,10 @@ describe Mongoid::Orderable do
|
|
60
69
|
SimpleOrderable.fields['position'].options[:type].should == Integer
|
61
70
|
end
|
62
71
|
|
72
|
+
it 'should have index on position column' do
|
73
|
+
SimpleOrderable.index_options[:position].should_not be_nil
|
74
|
+
end
|
75
|
+
|
63
76
|
it 'should set proper position while creation' do
|
64
77
|
positions.should == [1, 2, 3, 4, 5]
|
65
78
|
end
|
@@ -267,4 +280,10 @@ describe Mongoid::Orderable do
|
|
267
280
|
end
|
268
281
|
end
|
269
282
|
|
283
|
+
describe NoIndexOrderable do
|
284
|
+
it 'should not have index on position column' do
|
285
|
+
NoIndexOrderable.index_options[:position].should be_nil
|
286
|
+
end
|
287
|
+
end
|
288
|
+
|
270
289
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mongoid_orderable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-02-
|
12
|
+
date: 2012-02-14 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement: &
|
16
|
+
requirement: &70092185456800 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70092185456800
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: mongoid
|
27
|
-
requirement: &
|
27
|
+
requirement: &70092185456320 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,7 +32,7 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70092185456320
|
36
36
|
description: Gem allows mongoid model behave as orderable list
|
37
37
|
email:
|
38
38
|
- kinwizard@gmail.com
|