Module: ActiveRecord::ConnectionAdapters::SchemaStatements
- Defined in:
- lib/active_record_foreign_keys.rb
Instance Method Summary collapse
- #add_foreign_key(table_name, column_name, reference_table_name, reference_column_name, options = {}) ⇒ Object
- #foreign_key_sql(table_name, column_name, reference_table_name, reference_column_name, options = {}) ⇒ Object
- #remove_foreign_key(table_name, column_name) ⇒ Object
Instance Method Details
#add_foreign_key(table_name, column_name, reference_table_name, reference_column_name, options = {}) ⇒ Object
48 49 50 51 52 53 54 55 |
# File 'lib/active_record_foreign_keys.rb', line 48 def add_foreign_key(table_name, column_name, reference_table_name, reference_column_name, = {}) sql = <<-EOS ALTER TABLE #{quote_table_name(table_name)} ADD CONSTRAINT #{quote_table_name(foreign_key_constraint_name(table_name, column_name))} EOS sql += foreign_key_sql(table_name, column_name, reference_table_name, reference_column_name, ) execute sql end |
#foreign_key_sql(table_name, column_name, reference_table_name, reference_column_name, options = {}) ⇒ Object
63 64 65 66 67 68 69 70 |
# File 'lib/active_record_foreign_keys.rb', line 63 def foreign_key_sql(table_name, column_name, reference_table_name, reference_column_name, = {}) = { :on_update => :no_action, :on_delete => :no_action }.merge() "FOREIGN KEY (#{quote_column_name(column_name)}) REFERENCES #{quote_table_name(reference_table_name)}(#{quote_column_name(reference_column_name)}) ON UPDATE #{foreign_key_action([:on_update])} ON DELETE #{foreign_key_action([:on_delete])}" end |
#remove_foreign_key(table_name, column_name) ⇒ Object
57 58 59 60 61 |
# File 'lib/active_record_foreign_keys.rb', line 57 def remove_foreign_key(table_name, column_name) if foreign_key_exists?(table_name, column_name) execute "ALTER TABLE #{quote_table_name(table_name)} DROP CONSTRAINT #{quote_table_name(foreign_key_constraint_name(table_name, column_name))}" end end |