From 8550ba307d712ebede0d0695b5172bb3e9af16c9 Mon Sep 17 00:00:00 2001 From: Yves Senn Date: Fri, 20 Jun 2014 08:56:30 +0200 Subject: fk: raise for invalid :on_update / :on_delete values --- .../connection_adapters/abstract/schema_creation.rb | 11 ++++++++--- activerecord/test/cases/migration/foreign_key_test.rb | 10 ++++++++++ 2 files changed, 18 insertions(+), 3 deletions(-) (limited to 'activerecord') 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 b896bd25e4..e495304376 100644 --- a/activerecord/lib/active_record/connection_adapters/abstract/schema_creation.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract/schema_creation.rb @@ -104,9 +104,14 @@ FOREIGN KEY (#{quote_column_name(o.column)}) def action_sql(action, dependency) case dependency - when :nullify then "ON #{action} SET NULL" - when :cascade then "ON #{action} CASCADE" - when :restrict then "ON #{action} RESTRICT" + when :nullify then "ON #{action} SET NULL" + when :cascade then "ON #{action} CASCADE" + when :restrict then "ON #{action} RESTRICT" + else + raise ArgumentError, <<-MSG +'#{dependency}' is not supported for :on_update or :on_delete. +Supported values are: :nullify, :cascade, :restrict + MSG end end end diff --git a/activerecord/test/cases/migration/foreign_key_test.rb b/activerecord/test/cases/migration/foreign_key_test.rb index 7dad67ef88..6a24df076d 100644 --- a/activerecord/test/cases/migration/foreign_key_test.rb +++ b/activerecord/test/cases/migration/foreign_key_test.rb @@ -126,6 +126,16 @@ module ActiveRecord assert_equal :nullify, fk.on_delete end + def test_on_update_and_on_delete_raises_with_invalid_values + assert_raises ArgumentError do + @connection.add_foreign_key :astronauts, :rockets, column: "rocket_id", on_delete: :invalid + end + + assert_raises ArgumentError do + @connection.add_foreign_key :astronauts, :rockets, column: "rocket_id", on_update: :invalid + end + end + def test_add_foreign_key_with_on_update @connection.add_foreign_key :astronauts, :rockets, column: "rocket_id", on_update: :nullify -- cgit v1.2.3