awesome_nested_set 1.4.2 → 1.4.3
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +2 -1
- data/VERSION +1 -1
- data/awesome_nested_set.gemspec +6 -3
- data/lib/awesome_nested_set.rb +10 -9
- data/test/awesome_nested_set_test.rb +26 -1
- data/test/db/schema.rb +7 -0
- metadata +2 -2
data/Rakefile
CHANGED
@@ -22,7 +22,8 @@ Jeweler::Tasks.new do |s|
|
|
22
22
|
s.rdoc_options = ["--main", "README.rdoc", "--inline-source", "--line-numbers"]
|
23
23
|
s.test_files = Dir['test/**/*.{yml,rb}']
|
24
24
|
end
|
25
|
-
|
25
|
+
Jeweler::GemcutterTasks.new
|
26
|
+
|
26
27
|
desc 'Default: run unit tests.'
|
27
28
|
task :default => :test
|
28
29
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.4.
|
1
|
+
1.4.3
|
data/awesome_nested_set.gemspec
CHANGED
@@ -1,12 +1,15 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
|
1
4
|
# -*- encoding: utf-8 -*-
|
2
5
|
|
3
6
|
Gem::Specification.new do |s|
|
4
7
|
s.name = %q{awesome_nested_set}
|
5
|
-
s.version = "1.4.
|
8
|
+
s.version = "1.4.3"
|
6
9
|
|
7
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
11
|
s.authors = ["Brandon Keepers", "Daniel Morrison"]
|
9
|
-
s.date = %q{2009-
|
12
|
+
s.date = %q{2009-10-07}
|
10
13
|
s.description = %q{An awesome nested set implementation for Active Record}
|
11
14
|
s.email = %q{info@collectiveidea.com}
|
12
15
|
s.extra_rdoc_files = [
|
@@ -38,7 +41,7 @@ Gem::Specification.new do |s|
|
|
38
41
|
s.homepage = %q{http://github.com/collectiveidea/awesome_nested_set}
|
39
42
|
s.rdoc_options = ["--main", "README.rdoc", "--inline-source", "--line-numbers"]
|
40
43
|
s.require_paths = ["lib"]
|
41
|
-
s.rubygems_version = %q{1.3.
|
44
|
+
s.rubygems_version = %q{1.3.5}
|
42
45
|
s.summary = %q{An awesome nested set implementation for Active Record}
|
43
46
|
s.test_files = [
|
44
47
|
"test/db/database.yml",
|
data/lib/awesome_nested_set.rb
CHANGED
@@ -60,16 +60,17 @@ module CollectiveIdea #:nodoc:
|
|
60
60
|
extend Columns
|
61
61
|
extend ClassMethods
|
62
62
|
|
63
|
-
belongs_to :parent, :class_name => self.base_class.
|
63
|
+
belongs_to :parent, :class_name => self.base_class.to_s,
|
64
64
|
:foreign_key => parent_column_name
|
65
|
-
has_many :children, :class_name => self.base_class.
|
65
|
+
has_many :children, :class_name => self.base_class.to_s,
|
66
66
|
:foreign_key => parent_column_name, :order => quoted_left_column_name
|
67
67
|
|
68
68
|
attr_accessor :skip_before_destroy
|
69
69
|
|
70
70
|
# no bulk assignment
|
71
|
-
|
72
|
-
|
71
|
+
if accessible_attributes.blank?
|
72
|
+
attr_protected left_column_name.intern, right_column_name.intern
|
73
|
+
end
|
73
74
|
|
74
75
|
before_create :set_default_left_and_right
|
75
76
|
before_save :store_new_parent
|
@@ -88,7 +89,7 @@ module CollectiveIdea #:nodoc:
|
|
88
89
|
named_scope :roots, :conditions => {parent_column_name => nil}, :order => quoted_left_column_name
|
89
90
|
named_scope :leaves, :conditions => "#{quoted_right_column_name} - #{quoted_left_column_name} = 1", :order => quoted_left_column_name
|
90
91
|
|
91
|
-
define_callbacks("before_move", "after_move")
|
92
|
+
define_callbacks("before_move", "after_move")
|
92
93
|
end
|
93
94
|
|
94
95
|
end
|
@@ -160,7 +161,7 @@ module CollectiveIdea #:nodoc:
|
|
160
161
|
# Don't rebuild a valid tree.
|
161
162
|
return true if valid?
|
162
163
|
|
163
|
-
scope = lambda{}
|
164
|
+
scope = lambda{|node|}
|
164
165
|
if acts_as_nested_set_options[:scope]
|
165
166
|
scope = lambda{|node|
|
166
167
|
scope_column_names.inject(""){|str, column_name|
|
@@ -442,7 +443,7 @@ module CollectiveIdea #:nodoc:
|
|
442
443
|
end
|
443
444
|
|
444
445
|
def store_new_parent
|
445
|
-
@move_to_new_parent_id =
|
446
|
+
@move_to_new_parent_id = send("#{parent_column_name}_changed?") ? parent_id : false
|
446
447
|
true # force callback to return true
|
447
448
|
end
|
448
449
|
|
@@ -504,7 +505,7 @@ module CollectiveIdea #:nodoc:
|
|
504
505
|
|
505
506
|
def move_to(target, position)
|
506
507
|
raise ActiveRecord::ActiveRecordError, "You cannot move a new node" if self.new_record?
|
507
|
-
return if
|
508
|
+
return if run_callbacks(:before_move) == false
|
508
509
|
transaction do
|
509
510
|
if target.is_a? self.class.base_class
|
510
511
|
target.reload_nested_set
|
@@ -567,7 +568,7 @@ module CollectiveIdea #:nodoc:
|
|
567
568
|
end
|
568
569
|
target.reload_nested_set if target
|
569
570
|
self.reload_nested_set
|
570
|
-
|
571
|
+
run_callbacks(:after_move)
|
571
572
|
end
|
572
573
|
|
573
574
|
end
|
@@ -11,6 +11,9 @@ class ScopedCategory < ActiveRecord::Base
|
|
11
11
|
acts_as_nested_set :scope => :organization
|
12
12
|
set_table_name 'categories'
|
13
13
|
end
|
14
|
+
class RenamedColumns < ActiveRecord::Base
|
15
|
+
acts_as_nested_set :parent_column => 'mother_id', :left_column => 'red', :right_column => 'black'
|
16
|
+
end
|
14
17
|
|
15
18
|
class AwesomeNestedSetTest < TestCaseClass
|
16
19
|
|
@@ -33,16 +36,28 @@ class AwesomeNestedSetTest < TestCaseClass
|
|
33
36
|
def test_left_column_name
|
34
37
|
assert_equal 'lft', Default.left_column_name
|
35
38
|
assert_equal 'lft', Default.new.left_column_name
|
39
|
+
assert_equal 'red', RenamedColumns.left_column_name
|
40
|
+
assert_equal 'red', RenamedColumns.new.left_column_name
|
36
41
|
end
|
37
|
-
|
42
|
+
|
38
43
|
def test_right_column_name
|
39
44
|
assert_equal 'rgt', Default.right_column_name
|
40
45
|
assert_equal 'rgt', Default.new.right_column_name
|
46
|
+
assert_equal 'black', RenamedColumns.right_column_name
|
47
|
+
assert_equal 'black', RenamedColumns.new.right_column_name
|
41
48
|
end
|
42
49
|
|
43
50
|
def test_parent_column_name
|
44
51
|
assert_equal 'parent_id', Default.parent_column_name
|
45
52
|
assert_equal 'parent_id', Default.new.parent_column_name
|
53
|
+
assert_equal 'mother_id', RenamedColumns.parent_column_name
|
54
|
+
assert_equal 'mother_id', RenamedColumns.new.parent_column_name
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_creation_with_altered_column_names
|
58
|
+
assert_nothing_raised do
|
59
|
+
RenamedColumns.create!()
|
60
|
+
end
|
46
61
|
end
|
47
62
|
|
48
63
|
def test_quoted_left_column_name
|
@@ -730,4 +745,14 @@ class AwesomeNestedSetTest < TestCaseClass
|
|
730
745
|
|
731
746
|
check_structure(Category.root.self_and_descendants, levels)
|
732
747
|
end
|
748
|
+
|
749
|
+
def test_model_with_attr_accessible
|
750
|
+
model = Class.new(ActiveRecord::Base)
|
751
|
+
model.set_table_name 'categories'
|
752
|
+
model.attr_accessible :name
|
753
|
+
assert_nothing_raised do
|
754
|
+
model.acts_as_nested_set
|
755
|
+
model.new(:name => 'foo')
|
756
|
+
end
|
757
|
+
end
|
733
758
|
end
|
data/test/db/schema.rb
CHANGED
@@ -20,4 +20,11 @@ ActiveRecord::Schema.define(:version => 0) do
|
|
20
20
|
t.column :notable_id, :integer
|
21
21
|
t.column :notable_type, :string
|
22
22
|
end
|
23
|
+
|
24
|
+
create_table :renamed_columns, :force => true do |t|
|
25
|
+
t.column :name, :string
|
26
|
+
t.column :mother_id, :integer
|
27
|
+
t.column :red, :integer
|
28
|
+
t.column :black, :integer
|
29
|
+
end
|
23
30
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: awesome_nested_set
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.4.
|
4
|
+
version: 1.4.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brandon Keepers
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2009-
|
13
|
+
date: 2009-10-07 00:00:00 -04:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|