ordered_tree 0.1.8 → 0.1.9
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/VERSION +1 -1
- data/lib/ordered_tree.rb +3 -13
- data/lib/ordered_tree/instance_methods/misc.rb +10 -2
- data/ordered_tree.gemspec +1 -1
- data/spec/fixtures/category.rb +1 -1
- data/spec/ordered_tree_spec.rb +12 -2
- data/spec/spec_helper.rb +1 -0
- metadata +30 -30
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.9
|
data/lib/ordered_tree.rb
CHANGED
@@ -30,29 +30,19 @@ module OrderedTree #:nodoc:
|
|
30
30
|
belongs_to :parent_node,
|
31
31
|
:class_name => self.name,
|
32
32
|
:foreign_key => ordered_tree_config[:foreign_key],
|
33
|
-
:primary_key => ordered_tree_config[:primary_key]
|
33
|
+
:primary_key => ordered_tree_config[:primary_key],
|
34
|
+
:conditions => proc {scope_condition}
|
34
35
|
has_many :child_nodes,
|
35
36
|
:class_name => self.name,
|
36
37
|
:foreign_key => ordered_tree_config[:foreign_key],
|
37
38
|
:primary_key => ordered_tree_config[:primary_key],
|
39
|
+
:conditions => proc {scope_condition},
|
38
40
|
:order => ordered_tree_config[:order]
|
39
41
|
scope :roots, lambda { |*args|
|
40
42
|
scope_condition = args[0]
|
41
43
|
where(scope_condition).where(self.ordered_tree_config[:foreign_key].to_sym => 0).order(self.ordered_tree_config[:order])
|
42
44
|
}
|
43
45
|
|
44
|
-
# If the scope is something like :person, then turn it into :person_id
|
45
|
-
if self.ordered_tree_config[:scope].is_a?(Symbol) && self.ordered_tree_config[:scope].to_s !~ /_id$/
|
46
|
-
self.ordered_tree_config[:scope] = "#{self.ordered_tree_config[:scope]}_id".intern
|
47
|
-
end
|
48
|
-
|
49
|
-
if self.ordered_tree_config[:scope].is_a?(Symbol) # ie :person_id
|
50
|
-
define_method "scope_condition" do
|
51
|
-
hash = {self.class.ordered_tree_config[:scope].to_sym => send(self.class.ordered_tree_config[:scope].to_sym)}
|
52
|
-
self.class.send(:sanitize_sql_hash_for_conditions, hash)
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
46
|
include OrderedTree::ClassMethods
|
57
47
|
include OrderedTree::InstanceMethods
|
58
48
|
end #ordered_tree
|
@@ -13,9 +13,17 @@ module OrderedTree
|
|
13
13
|
|
14
14
|
private
|
15
15
|
|
16
|
-
# Overwrite this method to define the scope of the list changes
|
17
16
|
def scope_condition
|
18
|
-
|
17
|
+
return @scope_condition if defined?(@scope_condition)
|
18
|
+
scope = self.class.ordered_tree_config[:scope]
|
19
|
+
# If the scope is something like :person, then turn it into :person_id
|
20
|
+
scope = :"#{scope}_id" if scope.is_a?(Symbol) && scope.to_s !~ /_id$/
|
21
|
+
|
22
|
+
@scope_condition = if scope
|
23
|
+
self.class.send(:sanitize_sql_hash_for_conditions, {scope => send(scope)})
|
24
|
+
else
|
25
|
+
"1=1"
|
26
|
+
end
|
19
27
|
end
|
20
28
|
end
|
21
29
|
end
|
data/ordered_tree.gemspec
CHANGED
data/spec/fixtures/category.rb
CHANGED
data/spec/ordered_tree_spec.rb
CHANGED
@@ -8,10 +8,20 @@ describe OrderedTree do
|
|
8
8
|
|
9
9
|
describe "when a primary_key is supplied" do
|
10
10
|
it "should use the parent_id to point to the primary_key instead of :id" do
|
11
|
-
c1 = Category.create(:alt_id => 10)
|
12
|
-
c2 = Category.create(:parent_id => 10)
|
11
|
+
c1 = Category.create(:person_id => 1, :alt_id => 10)
|
12
|
+
c2 = Category.create(:person_id => 1, :parent_id => 10)
|
13
|
+
d1 = Category.create(:person_id => 2, :alt_id => 10)
|
14
|
+
d2 = Category.create(:person_id => 2, :parent_id => 10)
|
15
|
+
|
13
16
|
c2.parent.should == c1
|
14
17
|
c1.children.should include(c2)
|
18
|
+
d1.children.should_not include(c2)
|
19
|
+
c2.root.should == c1
|
20
|
+
|
21
|
+
d2.parent.should == d1
|
22
|
+
d1.children.should include(d2)
|
23
|
+
c1.children.should_not include(d2)
|
24
|
+
d2.root.should == d1
|
15
25
|
end
|
16
26
|
end
|
17
27
|
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ordered_tree
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 9
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 9
|
10
|
+
version: 0.1.9
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Ramon Tayag
|
@@ -19,8 +19,9 @@ date: 2011-08-07 00:00:00 +08:00
|
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
|
+
name: activerecord
|
22
23
|
type: :runtime
|
23
|
-
|
24
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
24
25
|
none: false
|
25
26
|
requirements:
|
26
27
|
- - ">="
|
@@ -31,12 +32,12 @@ dependencies:
|
|
31
32
|
- 0
|
32
33
|
- 0
|
33
34
|
version: 3.0.0
|
34
|
-
name: activerecord
|
35
|
-
version_requirements: *id001
|
36
35
|
prerelease: false
|
36
|
+
requirement: *id001
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
|
+
name: rspec
|
38
39
|
type: :development
|
39
|
-
|
40
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
40
41
|
none: false
|
41
42
|
requirements:
|
42
43
|
- - ~>
|
@@ -47,12 +48,12 @@ dependencies:
|
|
47
48
|
- 6
|
48
49
|
- 0
|
49
50
|
version: 2.6.0
|
50
|
-
name: rspec
|
51
|
-
version_requirements: *id002
|
52
51
|
prerelease: false
|
52
|
+
requirement: *id002
|
53
53
|
- !ruby/object:Gem::Dependency
|
54
|
+
name: bundler
|
54
55
|
type: :development
|
55
|
-
|
56
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
56
57
|
none: false
|
57
58
|
requirements:
|
58
59
|
- - ~>
|
@@ -63,12 +64,12 @@ dependencies:
|
|
63
64
|
- 0
|
64
65
|
- 0
|
65
66
|
version: 1.0.0
|
66
|
-
name: bundler
|
67
|
-
version_requirements: *id003
|
68
67
|
prerelease: false
|
68
|
+
requirement: *id003
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
+
name: jeweler
|
70
71
|
type: :development
|
71
|
-
|
72
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
72
73
|
none: false
|
73
74
|
requirements:
|
74
75
|
- - ~>
|
@@ -79,12 +80,12 @@ dependencies:
|
|
79
80
|
- 6
|
80
81
|
- 2
|
81
82
|
version: 1.6.2
|
82
|
-
name: jeweler
|
83
|
-
version_requirements: *id004
|
84
83
|
prerelease: false
|
84
|
+
requirement: *id004
|
85
85
|
- !ruby/object:Gem::Dependency
|
86
|
+
name: rcov
|
86
87
|
type: :development
|
87
|
-
|
88
|
+
version_requirements: &id005 !ruby/object:Gem::Requirement
|
88
89
|
none: false
|
89
90
|
requirements:
|
90
91
|
- - ">="
|
@@ -93,12 +94,12 @@ dependencies:
|
|
93
94
|
segments:
|
94
95
|
- 0
|
95
96
|
version: "0"
|
96
|
-
name: rcov
|
97
|
-
version_requirements: *id005
|
98
97
|
prerelease: false
|
98
|
+
requirement: *id005
|
99
99
|
- !ruby/object:Gem::Dependency
|
100
|
+
name: sqlite3
|
100
101
|
type: :development
|
101
|
-
|
102
|
+
version_requirements: &id006 !ruby/object:Gem::Requirement
|
102
103
|
none: false
|
103
104
|
requirements:
|
104
105
|
- - ">="
|
@@ -107,12 +108,12 @@ dependencies:
|
|
107
108
|
segments:
|
108
109
|
- 0
|
109
110
|
version: "0"
|
110
|
-
name: sqlite3
|
111
|
-
version_requirements: *id006
|
112
111
|
prerelease: false
|
112
|
+
requirement: *id006
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
|
+
name: guard-rspec
|
114
115
|
type: :development
|
115
|
-
|
116
|
+
version_requirements: &id007 !ruby/object:Gem::Requirement
|
116
117
|
none: false
|
117
118
|
requirements:
|
118
119
|
- - ">="
|
@@ -121,12 +122,12 @@ dependencies:
|
|
121
122
|
segments:
|
122
123
|
- 0
|
123
124
|
version: "0"
|
124
|
-
name: guard-rspec
|
125
|
-
version_requirements: *id007
|
126
125
|
prerelease: false
|
126
|
+
requirement: *id007
|
127
127
|
- !ruby/object:Gem::Dependency
|
128
|
+
name: libnotify
|
128
129
|
type: :development
|
129
|
-
|
130
|
+
version_requirements: &id008 !ruby/object:Gem::Requirement
|
130
131
|
none: false
|
131
132
|
requirements:
|
132
133
|
- - ">="
|
@@ -135,12 +136,12 @@ dependencies:
|
|
135
136
|
segments:
|
136
137
|
- 0
|
137
138
|
version: "0"
|
138
|
-
name: libnotify
|
139
|
-
version_requirements: *id008
|
140
139
|
prerelease: false
|
140
|
+
requirement: *id008
|
141
141
|
- !ruby/object:Gem::Dependency
|
142
|
+
name: rb-inotify
|
142
143
|
type: :development
|
143
|
-
|
144
|
+
version_requirements: &id009 !ruby/object:Gem::Requirement
|
144
145
|
none: false
|
145
146
|
requirements:
|
146
147
|
- - ">="
|
@@ -149,9 +150,8 @@ dependencies:
|
|
149
150
|
segments:
|
150
151
|
- 0
|
151
152
|
version: "0"
|
152
|
-
name: rb-inotify
|
153
|
-
version_requirements: *id009
|
154
153
|
prerelease: false
|
154
|
+
requirement: *id009
|
155
155
|
description: Uses parent_id and position to create an ordered tree.
|
156
156
|
email: ramon@tayag.net
|
157
157
|
executables: []
|