mongo_mapper_acts_as_list 0.3.2 → 0.3.3
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.
@@ -13,64 +13,66 @@ module MongoMapper
|
|
13
13
|
|
14
14
|
|
15
15
|
module ClassMethods
|
16
|
-
|
17
16
|
def acts_as_list(options = {})
|
18
|
-
configuration = { :column => "position", :scope => {} }
|
19
|
-
configuration.update(options) if options.is_a?(Hash)
|
20
17
|
|
21
18
|
|
22
19
|
|
20
|
+
def self.included(base)
|
21
|
+
include Comparable
|
22
|
+
end
|
23
|
+
|
24
|
+
|
25
|
+
|
26
|
+
configuration = { :column => "position", :scope => {} }
|
27
|
+
configuration.update(options) if options.is_a?(Hash)
|
23
28
|
configuration[:scope] = "#{configuration[:scope]}_id".intern if
|
24
29
|
configuration[:scope].is_a?(Symbol) && configuration[:scope].to_s !~ /_id$/
|
25
30
|
|
26
31
|
|
27
32
|
|
28
33
|
if configuration[:scope].is_a?(Symbol)
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
end
|
33
|
-
)
|
34
|
-
|
34
|
+
define_method "scope_condition" do
|
35
|
+
{ configuration[:scope] => send(configuration[:scope].to_s) }.symbolize_keys!
|
36
|
+
end
|
35
37
|
elsif configuration[:scope].is_a?(Array)
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
attrs.symbolize_keys!
|
43
|
-
end
|
44
|
-
)
|
38
|
+
define_method "scope_condition" do
|
39
|
+
configuration[:scope].inject({}) { |memo, column|
|
40
|
+
memo[column.intern] = send(column.intern)
|
41
|
+
memo
|
42
|
+
}.symbolize_keys!
|
43
|
+
end
|
45
44
|
else
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
#{configuration[:scope].to_json}
|
50
|
-
end
|
51
|
-
)
|
45
|
+
define_method "scope_condition" do
|
46
|
+
configuration[:scope].to_json
|
47
|
+
end
|
52
48
|
end
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
49
|
+
|
50
|
+
|
51
|
+
|
52
|
+
define_method "position_column" do
|
53
|
+
"#{configuration[:column]}"
|
54
|
+
end
|
55
|
+
|
56
|
+
|
57
|
+
|
58
|
+
key configuration[:column], Integer
|
59
|
+
|
60
|
+
|
61
|
+
|
62
|
+
before_destroy :decrement_positions_on_lower_items
|
63
|
+
before_create :add_to_list_bottom
|
64
|
+
|
65
|
+
|
66
|
+
|
67
|
+
class_eval <<-EOV
|
57
68
|
def acts_as_list_class
|
58
69
|
::#{self.name}
|
59
70
|
end
|
60
|
-
|
61
|
-
def position_column
|
62
|
-
'#{configuration[:column]}'
|
63
|
-
end
|
64
|
-
|
65
|
-
#{scope_condition_method}
|
66
|
-
|
67
|
-
key '#{configuration[:column]}', Integer
|
68
|
-
|
69
|
-
before_destroy :decrement_positions_on_lower_items
|
70
|
-
before_create :add_to_list_bottom
|
71
71
|
EOV
|
72
|
+
|
73
|
+
|
74
|
+
|
72
75
|
end
|
73
|
-
|
74
76
|
end
|
75
77
|
|
76
78
|
|
@@ -81,6 +83,10 @@ module MongoMapper
|
|
81
83
|
|
82
84
|
module InstanceMethods
|
83
85
|
|
86
|
+
def <=>(other)
|
87
|
+
self[position_column] <=> other[position_column]
|
88
|
+
end
|
89
|
+
|
84
90
|
# Insert the item at the given position (defaults to the top position of 1).
|
85
91
|
def insert_at(position = 1)
|
86
92
|
insert_at_position(position)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mongo_mapper_acts_as_list
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2011-10-23 00:00:00.000000000Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: mongo_mapper
|
16
|
-
requirement: &
|
16
|
+
requirement: &70196084473160 !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: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70196084473160
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rake
|
27
|
-
requirement: &
|
27
|
+
requirement: &70196084470020 !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: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70196084470020
|
36
36
|
description: This is a port of classic Rails' acts_as_list to Mongo Mapper. This Mongo
|
37
37
|
Mapper plugin provides the capabilities for sorting and reordering a number of objects
|
38
38
|
in a list. If you do not specify custom position column in the options, a key named
|
@@ -63,7 +63,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
63
63
|
version: '0'
|
64
64
|
segments:
|
65
65
|
- 0
|
66
|
-
hash:
|
66
|
+
hash: 1708410481327726767
|
67
67
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
68
68
|
none: false
|
69
69
|
requirements:
|