class CollectiveIdea::Acts::NestedSet::SetValidator

Attributes

model[R]
parent[R]
scope[RW]

Public Class Methods

new(model) click to toggle source
   # File lib/awesome_nested_set/set_validator.rb
 6 def initialize(model)
 7   @model = model
 8   @scope = model.all
 9   @parent = arel_table.alias('parent')
10 end

Public Instance Methods

valid?() click to toggle source
   # File lib/awesome_nested_set/set_validator.rb
12 def valid?
13   query.count == 0
14 end

Private Instance Methods

bound_is_null(column_name) click to toggle source
   # File lib/awesome_nested_set/set_validator.rb
44 def bound_is_null(column_name)
45   arel_table[column_name].eq(nil)
46 end
bounds_outside_parent() click to toggle source
   # File lib/awesome_nested_set/set_validator.rb
56 def bounds_outside_parent
57   arel_table[left_column_name].lteq(parent[left_column_name]).or(arel_table[right_column_name].gteq(parent[right_column_name]))
58 end
filter_scope() click to toggle source
   # File lib/awesome_nested_set/set_validator.rb
35 def filter_scope
36   self.scope = scope.where(
37                            bound_is_null(left_column_name).
38                            or(bound_is_null(right_column_name)).
39                            or(left_bound_greater_than_right).
40                            or(parent_not_null.and(bounds_outside_parent))
41                            )
42 end
join_scope() click to toggle source
   # File lib/awesome_nested_set/set_validator.rb
30 def join_scope
31   join_arel = arel_table.join(parent, Arel::Nodes::OuterJoin).on(parent[primary_column_name].eq(arel_table[parent_column_name]))
32   self.scope = scope.joins(join_arel.join_sources)
33 end
left_bound_greater_than_right() click to toggle source
   # File lib/awesome_nested_set/set_validator.rb
48 def left_bound_greater_than_right
49   arel_table[left_column_name].gteq(arel_table[right_column_name])
50 end
parent_not_null() click to toggle source
   # File lib/awesome_nested_set/set_validator.rb
52 def parent_not_null
53   arel_table[parent_column_name].not_eq(nil)
54 end
query() click to toggle source
   # File lib/awesome_nested_set/set_validator.rb
25 def query
26   join_scope
27   filter_scope
28 end