Module: Rein::Constraint::Inclusion

Includes:
ActiveRecord::ConnectionAdapters::Quoting
Included in:
ActiveRecord::ConnectionAdapters::PostgreSQLAdapter
Defined in:
lib/rein/constraint/inclusion.rb

Overview

This module contains methods for defining inclusion constraints.

Instance Method Summary collapse

Instance Method Details

#add_inclusion_constraint(table, attribute, options = {}) ⇒ Object



9
10
11
12
13
14
# File 'lib/rein/constraint/inclusion.rb', line 9

def add_inclusion_constraint(table, attribute, options = {})
  name = "#{table}_#{attribute}"
  values = options[:in].map { |value| quote(value) }.join(", ")
  conditions = "#{attribute} IN (#{values})"
  execute("ALTER TABLE #{table} ADD CONSTRAINT #{name} CHECK (#{conditions})")
end

#remove_inclusion_constraint(table, attribute) ⇒ Object



16
17
18
19
# File 'lib/rein/constraint/inclusion.rb', line 16

def remove_inclusion_constraint(table, attribute)
  name = "#{table}_#{attribute}"
  execute("ALTER TABLE #{table} DROP CONSTRAINT #{name}")
end