aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/connection_adapters/abstract
diff options
context:
space:
mode:
authorYves Senn <yves.senn@gmail.com>2014-06-11 08:47:53 +0200
committerYves Senn <yves.senn@gmail.com>2014-06-26 22:03:49 +0200
commitacd0287dc18a3fbba6fa4301cb31a7aecd22922b (patch)
tree7ed2f4dc1d3b9d21772f638f390b876e62512f49 /activerecord/lib/active_record/connection_adapters/abstract
parent6955d864ceb0ba994ef4fb4c5e866463f247944b (diff)
downloadrails-acd0287dc18a3fbba6fa4301cb31a7aecd22922b.tar.gz
rails-acd0287dc18a3fbba6fa4301cb31a7aecd22922b.tar.bz2
rails-acd0287dc18a3fbba6fa4301cb31a7aecd22922b.zip
fk: support for on_update
Diffstat (limited to 'activerecord/lib/active_record/connection_adapters/abstract')
-rw-r--r--activerecord/lib/active_record/connection_adapters/abstract/schema_creation.rb5
-rw-r--r--activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb4
-rw-r--r--activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb3
3 files changed, 9 insertions, 3 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/abstract/schema_creation.rb b/activerecord/lib/active_record/connection_adapters/abstract/schema_creation.rb
index aad4431910..b896bd25e4 100644
--- a/activerecord/lib/active_record/connection_adapters/abstract/schema_creation.rb
+++ b/activerecord/lib/active_record/connection_adapters/abstract/schema_creation.rb
@@ -24,7 +24,8 @@ ADD CONSTRAINT #{quote_column_name(o.name)}
FOREIGN KEY (#{quote_column_name(o.column)})
REFERENCES #{quote_table_name(o.to_table)} (#{quote_column_name(o.primary_key)})
SQL
- sql << " #{action_sql(o.on_delete)}" if o.on_delete
+ sql << " #{action_sql('DELETE', o.on_delete)}" if o.on_delete
+ sql << " #{action_sql('UPDATE', o.on_update)}" if o.on_update
sql
end
@@ -101,7 +102,7 @@ FOREIGN KEY (#{quote_column_name(o.column)})
options.include?(:default) && !(options[:null] == false && options[:default].nil?)
end
- def action_sql(action = "DELETE", dependency)
+ def action_sql(action, dependency)
case dependency
when :nullify then "ON #{action} SET NULL"
when :cascade then "ON #{action} CASCADE"
diff --git a/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb b/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb
index 2d6cf2427c..2e47e68754 100644
--- a/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb
+++ b/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb
@@ -41,6 +41,10 @@ module ActiveRecord
def on_delete
options[:on_delete]
end
+
+ def on_update
+ options[:on_update]
+ end
end
# Represents the schema of an SQL table in an abstract way. This class
diff --git a/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb b/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb
index 3f72e35bb5..18e73b0200 100644
--- a/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb
+++ b/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb
@@ -654,7 +654,8 @@ module ActiveRecord
column: options[:column],
primary_key: primary_key,
name: foreign_key_name(from_table, options),
- on_delete: options.fetch(:on_delete, nil)
+ on_delete: options[:on_delete],
+ on_update: options[:on_update]
}
at = create_alter_table from_table
at.add_foreign_key to_table, options