awesome_nested_set 1.4.2 → 1.4.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.
- 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
|