Class: Sequel::ConstraintValidations::Generator

Inherits:
Object
  • Object
show all
Defined in:
lib/sequel/extensions/constraint_validations.rb

Overview

This is the DSL class used for the validate block inside create_table and alter_table.

Instance Method Summary collapse

Constructor Details

#initialize(generator) ⇒ Generator

Store the schema generator that encloses this validates block.


154
155
156
# File 'lib/sequel/extensions/constraint_validations.rb', line 154

def initialize(generator)
  @generator = generator
end

Instance Method Details

#drop(constraint) ⇒ Object

Given the name of a constraint, drop that constraint from the database, and remove the related validation metadata.


195
196
197
# File 'lib/sequel/extensions/constraint_validations.rb', line 195

def drop(constraint)
  @generator.validation({:type=>:drop, :name=>constraint})
end

#operator(op, arg, columns, opts = OPTS) ⇒ Object

Create operator validation. The op should be either :>, :>=, :<, or :<=, and the arg should be either a string or an integer.

Raises:


178
179
180
181
182
183
184
185
186
187
188
189
190
191
# File 'lib/sequel/extensions/constraint_validations.rb', line 178

def operator(op, arg, columns, opts=OPTS)
  raise Error, "invalid operator (#{op}) used when creating operator validation" unless suffix = OPERATORS[op]

  prefix = case arg
  when String
    "str"
  when Integer
    "int"
  else
    raise Error, "invalid argument (#{arg.inspect}) used when creating operator validation"
  end

  @generator.validation({:type=>:"#{prefix}_#{suffix}", :columns=>Array(columns), :arg=>arg}.merge!(opts))
end

#process(&block) ⇒ Object

Alias of instance_exec for a nicer API.


200
201
202
# File 'lib/sequel/extensions/constraint_validations.rb', line 200

def process(&block)
  instance_exec(&block)
end