acts_as_dag 1.0.4 → 1.0.5

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.
Files changed (2) hide show
  1. data/lib/acts_as_dag.rb +7 -2
  2. metadata +2 -2
data/lib/acts_as_dag.rb CHANGED
@@ -114,6 +114,11 @@ module ActsAsDAG
114
114
  end
115
115
 
116
116
  module InstanceMethods
117
+ # Returns true if this record is a root node
118
+ def root?
119
+ self.class.roots.exists? self
120
+ end
121
+
117
122
  # Searches all descendants for the best parent for the other
118
123
  # i.e. it lets you drop the category in at the top and it drops down the list until it finds its final resting place
119
124
  def plinko(other)
@@ -302,11 +307,11 @@ module ActsAsDAG
302
307
  # E
303
308
  #
304
309
  # Now destroy all affected descendant_links (ancestors of parent (C), descendants of child (D))
305
- descendant_type.delete_all(:ancestor_id => parent.fast_ancestor_ids, :descendant_id => child.fast_descendant_ids)
310
+ descendant_type.delete_all(:ancestor_id => parent.ancestor_ids, :descendant_id => child.descendant_ids)
306
311
 
307
312
  # Now iterate through all ancestors of the descendant_links that were deleted and pick only those that have no parents, namely (A, D)
308
313
  # These will be the starting points for the recreation of descendant links
309
- starting_points = self.class.find(parent.fast_ancestor_ids + child.fast_descendant_ids).select{|node| node.parents.empty? || node.parents == [nil] }
314
+ starting_points = self.class.find(parent.ancestor_ids + child.descendant_ids).select{|node| node.parents.empty? || node.parents == [nil] }
310
315
  logger.info {"starting points are #{starting_points.collect(&:name).to_sentence}" }
311
316
 
312
317
  # POSSIBLE OPTIMIZATION: The two starting points may share descendants. We only need to process each node once, so if we could skip dups, that would be good
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acts_as_dag
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4
4
+ version: 1.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -43,7 +43,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
43
43
  version: '0'
44
44
  requirements: []
45
45
  rubyforge_project:
46
- rubygems_version: 1.8.15
46
+ rubygems_version: 1.8.10
47
47
  signing_key:
48
48
  specification_version: 3
49
49
  summary: Adds directed acyclic graph functionality to ActiveRecord.