class XMigra::DeclarativeSupport::Table::ForeignKey
Constants
- IDENTIFIER
- IMPLICIT_PREFIX
Attributes
delete_rule[RW]
referent[RW]
update_rule[RW]
Public Class Methods
new(name, constr_spec)
click to toggle source
Calls superclass method
XMigra::DeclarativeSupport::Table::ColumnListConstraint::new
# File lib/xmigra/declarative_support/table.rb, line 227 def initialize(name, constr_spec) super(name, constr_spec) @referent = constr_spec['link to'] || Constraint.bad_spec( %Q{Foreign key constraint #{@name} does not specify "link to" (referent)} ) @update_rule = constr_spec['on update'].tap {|v| break v.upcase if v} @delete_rule = constr_spec['on delete'].tap {|v| break v.upcase if v} end
Public Instance Methods
constrained_colnames()
click to toggle source
# File lib/xmigra/declarative_support/table.rb, line 238 def constrained_colnames columns.keys end
creation_sql()
click to toggle source
# File lib/xmigra/declarative_support/table.rb, line 246 def creation_sql "".tap do |result| result << creation_name_sql result << "FOREIGN KEY (#{constrained_colnames.join(', ')})" result << "\n REFERENCES #{referent} (#{referenced_colnames.join(', ')})" if update_rule result << "\n ON UPDATE #{update_rule}" end if delete_rule result << "\n ON DELETE #{delete_rule}" end end end
referenced_colnames()
click to toggle source
# File lib/xmigra/declarative_support/table.rb, line 242 def referenced_colnames columns.values end
Protected Instance Methods
get_and_validate_columns(constr_spec)
click to toggle source
# File lib/xmigra/declarative_support/table.rb, line 261 def get_and_validate_columns(constr_spec) (constr_spec.raw_item('columns') || Constraint.bad_spec( %Q{#{self.class::IDENTIFIER} constraint #{name} must specify columns} )).tap do |cols| unless cols.kind_of? Hash Constraint.bad_spec( %Q{Foreign key constraint #{@name} expected "columns" to be a mapping (Hash) referrer -> referent} ) end end end