Sha256: 82a457ef9d28bbf593eb683db8bf43ec61867fcc62b45257c31407888e1e32c1
Contents?: true
Size: 1.91 KB
Versions: 4
Compression:
Stored size: 1.91 KB
Contents
require 'ardb' module Ardb module MigrationHelpers module_function def foreign_key(from_table, from_column, to_table, options={}) fk = ForeignKey.new(from_table, from_column, to_table, options) execute(fk.add_sql) end def drop_foreign_key(*args) from_table, from_column = args[0..1] options = args.last.kind_of?(Hash) ? args.last : {} fk = ForeignKey.new(from_table, from_column, nil, options) execute(fk.drop_sql) end def remove_column_with_fk(table, column) drop_foreign_key(table, column) remove_column(table, column) end class ForeignKey attr_reader :from_table, :from_column, :to_table, :to_column, :name, :adapter def initialize(from_table, from_column, to_table, options=nil) options ||= {} @from_table = from_table.to_s @from_column = from_column.to_s @to_table = to_table.to_s @to_column = (options[:to_column] || 'id').to_s @name = (options[:name] || "fk_#{@from_table}_#{@from_column}").to_s @adapter = Ardb::Adapter.send(Ardb.config.db.adapter) end def add_sql apply_data(@adapter.foreign_key_add_sql) end def drop_sql apply_data(@adapter.foreign_key_drop_sql) end private def apply_data(template_sql) template_sql. gsub(':from_table', @from_table). gsub(':from_column', @from_column). gsub(':to_table', @to_table). gsub(':to_column', @to_column). gsub(':name', @name) end end # This file will setup the AR migration command recorder for being able to # change our stuff, require it in an initializer module RecorderMixin def foreign_key(*args) record(:foreign_key, args) end protected def invert_foreign_key(args) [ :drop_foreign_key, args ] end end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
ardb-0.27.3 | lib/ardb/migration_helpers.rb |
ardb-0.27.2 | lib/ardb/migration_helpers.rb |
ardb-0.27.1 | lib/ardb/migration_helpers.rb |
ardb-0.27.0 | lib/ardb/migration_helpers.rb |