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