aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord
diff options
context:
space:
mode:
authorYves Senn <yves.senn@gmail.com>2014-06-26 13:09:45 +0200
committerYves Senn <yves.senn@gmail.com>2014-06-26 22:03:49 +0200
commit24e1aefb4b2d7b2b4babfd4bae1e9e613283b003 (patch)
tree6beccaf9f4abba40d53b6b6e269dcab118dc6f90 /activerecord
parent8768305f20d12c40241396092a63e0d56269fefe (diff)
downloadrails-24e1aefb4b2d7b2b4babfd4bae1e9e613283b003.tar.gz
rails-24e1aefb4b2d7b2b4babfd4bae1e9e613283b003.tar.bz2
rails-24e1aefb4b2d7b2b4babfd4bae1e9e613283b003.zip
fk: review corrections: indent, visibility, syntax, wording.
Diffstat (limited to 'activerecord')
-rw-r--r--activerecord/lib/active_record/connection_adapters/abstract/schema_creation.rb36
-rw-r--r--activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb17
-rw-r--r--activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb22
-rw-r--r--activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rb24
-rw-r--r--activerecord/lib/active_record/migration/command_recorder.rb6
5 files changed, 53 insertions, 52 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 5d13ee3633..c1379f6bec 100644
--- a/activerecord/lib/active_record/connection_adapters/abstract/schema_creation.rb
+++ b/activerecord/lib/active_record/connection_adapters/abstract/schema_creation.rb
@@ -18,21 +18,6 @@ module ActiveRecord
add_column_options!(sql, column_options(o))
end
- def visit_AddForeignKey(o)
- sql = <<-SQL
-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('DELETE', o.on_delete)}" if o.on_delete
- sql << " #{action_sql('UPDATE', o.on_update)}" if o.on_update
- sql
- end
-
- def visit_DropForeignKey(name)
- "DROP CONSTRAINT #{quote_column_name(name)}"
- end
-
private
def visit_AlterTable(o)
@@ -58,6 +43,21 @@ FOREIGN KEY (#{quote_column_name(o.column)})
create_sql
end
+ def visit_AddForeignKey(o)
+ sql = <<-SQL.strip_heredoc
+ 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('DELETE', o.on_delete)}" if o.on_delete
+ sql << " #{action_sql('UPDATE', o.on_update)}" if o.on_update
+ sql
+ end
+
+ def visit_DropForeignKey(name)
+ "DROP CONSTRAINT #{quote_column_name(name)}"
+ end
+
def column_options(o)
column_options = {}
column_options[:null] = o.null unless o.null.nil?
@@ -108,9 +108,9 @@ FOREIGN KEY (#{quote_column_name(o.column)})
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
+ raise ArgumentError, <<-MSG.strip_heredoc
+ '#{dependency}' is not supported for :on_update or :on_delete.
+ Supported values are: :nullify, :cascade, :restrict
MSG
end
end
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 e203767992..1789cce123 100644
--- a/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb
+++ b/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb
@@ -661,7 +661,7 @@ module ActiveRecord
at = create_alter_table from_table
at.add_foreign_key to_table, options
- execute schema_creation.accept at
+ execute schema_creation.accept(at)
end
def remove_foreign_key(from_table, options_or_to_table = {})
@@ -675,6 +675,7 @@ module ActiveRecord
fk_name_to_delete = options.fetch(:name) do
fk_to_delete = foreign_keys(from_table).detect {|fk| fk.column == options[:column] }
+
if fk_to_delete
fk_to_delete.name
else
@@ -685,19 +686,13 @@ module ActiveRecord
at = create_alter_table from_table
at.drop_foreign_key fk_name_to_delete
- execute schema_creation.accept at
+ execute schema_creation.accept(at)
end
def foreign_key_column_for(table_name) # :nodoc:
"#{table_name.to_s.singularize}_id"
end
- def foreign_key_name(table_name, options) # :nodoc:
- options.fetch(:name) do
- "fk_rails_#{SecureRandom.hex(5)}"
- end
- end
-
def dump_schema_information #:nodoc:
sm_table = ActiveRecord::Migrator.schema_migrations_table_name
@@ -908,6 +903,12 @@ module ActiveRecord
def create_alter_table(name)
AlterTable.new create_table_definition(name, false, {})
end
+
+ def foreign_key_name(table_name, options) # :nodoc:
+ options.fetch(:name) do
+ "fk_rails_#{SecureRandom.hex(5)}"
+ end
+ end
end
end
end
diff --git a/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb b/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb
index 868181e677..4924f345fc 100644
--- a/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb
+++ b/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb
@@ -510,7 +510,7 @@ module ActiveRecord
end
def foreign_keys(table_name)
- fk_info = select_all %{
+ fk_info = select_all <<-SQL.strip_heredoc
SELECT fk.referenced_table_name as 'to_table'
,fk.referenced_column_name as 'primary_key'
,fk.column_name as 'column'
@@ -519,7 +519,7 @@ module ActiveRecord
WHERE fk.referenced_column_name is not null
AND fk.table_schema = '#{@config[:database]}'
AND fk.table_name = '#{table_name}'
- }
+ SQL
create_table_info = select_one("SHOW CREATE TABLE #{quote_table_name(table_name)}")["Create Table"]
@@ -537,15 +537,6 @@ module ActiveRecord
end
end
- def extract_foreign_key_action(structure, name, action) # :nodoc:
- if structure =~ /CONSTRAINT #{quote_column_name(name)} FOREIGN KEY .* REFERENCES .* ON #{action} (CASCADE|SET NULL|RESTRICT)/
- case $1
- when 'CASCADE'; :cascade
- when 'SET NULL'; :nullify
- end
- end
- end
-
# Maps logical Rails types to MySQL-specific data types.
def type_to_sql(type, limit = nil, precision = nil, scale = nil)
case type.to_s
@@ -824,6 +815,15 @@ module ActiveRecord
# ...and send them all in one query
@connection.query "SET #{encoding} #{variable_assignments}"
end
+
+ def extract_foreign_key_action(structure, name, action) # :nodoc:
+ if structure =~ /CONSTRAINT #{quote_column_name(name)} FOREIGN KEY .* REFERENCES .* ON #{action} (CASCADE|SET NULL|RESTRICT)/
+ case $1
+ when 'CASCADE'; :cascade
+ when 'SET NULL'; :nullify
+ end
+ end
+ end
end
end
end
diff --git a/activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rb b/activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rb
index 7ffbe4434f..30df98be1b 100644
--- a/activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rb
+++ b/activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rb
@@ -449,18 +449,18 @@ module ActiveRecord
end
def foreign_keys(table_name)
- fk_info = select_all <<-SQL
-SELECT t2.relname AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
-FROM pg_constraint c
-JOIN pg_class t1 ON c.conrelid = t1.oid
-JOIN pg_class t2 ON c.confrelid = t2.oid
-JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
-JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
-JOIN pg_namespace t3 ON c.connamespace = t3.oid
-WHERE c.contype = 'f'
- AND t1.relname = #{quote(table_name)}
- AND t3.nspname = ANY (current_schemas(false))
-ORDER BY c.conname
+ fk_info = select_all <<-SQL.strip_heredoc
+ SELECT t2.relname AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
+ FROM pg_constraint c
+ JOIN pg_class t1 ON c.conrelid = t1.oid
+ JOIN pg_class t2 ON c.confrelid = t2.oid
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
+ WHERE c.contype = 'f'
+ AND t1.relname = #{quote(table_name)}
+ AND t3.nspname = ANY (current_schemas(false))
+ ORDER BY c.conname
SQL
fk_info.map do |row|
diff --git a/activerecord/lib/active_record/migration/command_recorder.rb b/activerecord/lib/active_record/migration/command_recorder.rb
index ad726a3c02..f833caaab6 100644
--- a/activerecord/lib/active_record/migration/command_recorder.rb
+++ b/activerecord/lib/active_record/migration/command_recorder.rb
@@ -170,13 +170,13 @@ module ActiveRecord
end
def invert_add_foreign_key(args)
- from_table, to_table, add_options = *args
+ from_table, to_table, add_options = args
add_options ||= {}
if add_options[:name]
- options = {name: add_options[:name]}
+ options = { name: add_options[:name] }
elsif add_options[:column]
- options = {column: add_options[:column]}
+ options = { column: add_options[:column] }
else
options = to_table
end