module Sequel::Plugins::ClassTableInheritanceConstraintValidations::ClassMethods

Private Instance Methods

inherited(subclass) click to toggle source
Calls superclass method
   # File lib/sequel/plugins/class_table_inheritance_constraint_validations.rb
56 def inherited(subclass)
57   super
58 
59   # constraint_validations will parse_constraint_validations in the
60   # classes after_set_dataset hook. That runs before cti_tables are
61   # updated for subclasses in class_table_inheritance's inherited
62   # so re-parsing them here.
63   subclass.send(:parse_constraint_validations)
64 end
parse_constraint_validations_dataset() click to toggle source
   # File lib/sequel/plugins/class_table_inheritance_constraint_validations.rb
66 def parse_constraint_validations_dataset
67   reflections = {}
68   allow_missing_columns = db_schema.select{|col, sch| sch[:allow_null] == false && nil != sch[:default]}.map(&:first)
69   hash = Sequel.synchronize{db.constraint_validations}
70   cv = []
71   ds = @dataset.with_quote_identifiers(false)
72   cti_tables.each do |table_name|
73     table_name = ds.literal(table_name)
74     cv += (Sequel.synchronize{hash[table_name]} || []).map{|r| constraint_validation_array(r, reflections, allow_missing_columns)}
75   end
76   @constraint_validations = cv
77   @constraint_validation_reflections = reflections
78 end