aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/connection_adapters/postgresql/schema_creation.rb
diff options
context:
space:
mode:
authorTravis Hunter <travis.c.hunter@gmail.com>2017-01-20 16:18:46 -0500
committerTravis Hunter <travis.hunter@blueapron.com>2017-12-01 09:00:20 -0500
commit8203482a9ef9bd60d5014745fd7af868d9954b1d (patch)
treeabd67a8b4a0f08d1b00a269e53f72eebd4984f16 /activerecord/lib/active_record/connection_adapters/postgresql/schema_creation.rb
parent32516e8862946da963e4ba9256553156ca321596 (diff)
downloadrails-8203482a9ef9bd60d5014745fd7af868d9954b1d.tar.gz
rails-8203482a9ef9bd60d5014745fd7af868d9954b1d.tar.bz2
rails-8203482a9ef9bd60d5014745fd7af868d9954b1d.zip
Add support for invalid foreign keys in Postgres
Add validate_constraint and update naming
Diffstat (limited to 'activerecord/lib/active_record/connection_adapters/postgresql/schema_creation.rb')
-rw-r--r--activerecord/lib/active_record/connection_adapters/postgresql/schema_creation.rb12
1 files changed, 12 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/postgresql/schema_creation.rb b/activerecord/lib/active_record/connection_adapters/postgresql/schema_creation.rb
index 59f661da25..8e381a92cf 100644
--- a/activerecord/lib/active_record/connection_adapters/postgresql/schema_creation.rb
+++ b/activerecord/lib/active_record/connection_adapters/postgresql/schema_creation.rb
@@ -5,6 +5,18 @@ module ActiveRecord
module PostgreSQL
class SchemaCreation < AbstractAdapter::SchemaCreation # :nodoc:
private
+ def visit_AlterTable(o)
+ super << o.constraint_validations.map { |fk| visit_ValidateConstraint fk }.join(" ")
+ end
+
+ def visit_AddForeignKey(o)
+ super.dup.tap { |sql| sql << " NOT VALID" unless o.validate? }
+ end
+
+ def visit_ValidateConstraint(name)
+ "VALIDATE CONSTRAINT #{quote_column_name(name)}"
+ end
+
def add_column_options!(sql, options)
if options[:collation]
sql << " COLLATE \"#{options[:collation]}\""