class XMigra::DeclarativeSupport::Table::ColumnListConstraint
Attributes
columns[R]
Public Class Methods
new(name, constr_spec)
click to toggle source
Calls superclass method
XMigra::DeclarativeSupport::Table::Constraint::new
# File lib/xmigra/declarative_support/table.rb, line 175 def initialize(name, constr_spec) super(name, constr_spec) @columns = get_and_validate_columns(constr_spec) end
Public Instance Methods
constrained_colnames()
click to toggle source
# File lib/xmigra/declarative_support/table.rb, line 182 def constrained_colnames columns end
Protected Instance Methods
get_and_validate_columns(constr_spec)
click to toggle source
# File lib/xmigra/declarative_support/table.rb, line 187 def get_and_validate_columns(constr_spec) (constr_spec.array_fetch('columns', ->(c) {c['name']}) || Constraint.bad_spec( %Q{#{self.class::IDENTIFIER} constraint #{name} must specify columns} )).tap do |cols| unless cols.kind_of? Array Constraint.bad_spec( %Q{#{self.class::IDENTIFIER} constraint #{@name} expected "columns" to be a sequence (Array)} ) end if cols.uniq.length < cols.length Constraint.bad_spec( %Q{#{self.class::IDENTIFIER} constraint #{@name} has one or more duplicate columns} ) end end end