Method: Sequel::ConstraintValidations#drop_constraint_validations_for

Defined in:
lib/sequel/extensions/constraint_validations.rb

#drop_constraint_validations_for(opts = OPTS) ⇒ Object

Delete validation metadata for specific constraints. At least one of the following options should be specified:

:table

The table containing the constraint

:column

The column affected by the constraint

: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.



302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
# File 'lib/sequel/extensions/constraint_validations.rb', line 302

def drop_constraint_validations_for(opts=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