The default table name used for the validation metadata.
The name of the table storing the validation metadata. If modifying this from the default, this should be changed directly after loading the extension into the database
Set the default validation metadata table name if it has not already been set.
# File lib/sequel/extensions/constraint_validations.rb, line 132 def self.extended(db) db.constraint_validations_table ||= DEFAULT_CONSTRAINT_VALIDATIONS_TABLE end
Create the table storing the validation metadata for all of the constraints created by this extension.
# File lib/sequel/extensions/constraint_validations.rb, line 214 def create_constraint_validations_table create_table(constraint_validations_table) do String :table, :null=>false String :constraint_name String :validation_type, :null=>false String :column, :null=>false String :argument String :message TrueClass :allow_nil end end
Delete validation metadata for specific constraints. At least one of the following options should be specified:
The table containing the constraint
The column affected by the constraint
The name of the related constraint
The main reason for this method is when dropping tables or columns. If you have previously defined a constraint validation on the table or column, you should delete the related metadata when dropping the table or column. For a table, this isn't a big issue, as it will just result in some wasted space, but for columns, if you don't drop the related metadata, it could make it impossible to save rows, since a validation for a nonexistent column will be created.
# File lib/sequel/extensions/constraint_validations.rb, line 247 def drop_constraint_validations_for(opts={}) ds = from(constraint_validations_table) if table = opts[:table] ds = ds.where(:table=>constraint_validations_literal_table(table)) end if column = opts[:column] ds = ds.where(:column=>column.to_s) end if constraint = opts[:constraint] ds = ds.where(:constraint_name=>constraint.to_s) end unless table || column || constraint raise Error, "must specify :table, :column, or :constraint when dropping constraint validations" end ds.delete end
Drop the constraint validations table.
# File lib/sequel/extensions/constraint_validations.rb, line 227 def drop_constraint_validations_table drop_table(constraint_validations_table) end