aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/rails/generators/active_record/migration/templates/migration.rb
diff options
context:
space:
mode:
authorAleksey Magusev <lexmag@gmail.com>2012-07-08 17:01:49 +0400
committerAleksey Magusev <lexmag@gmail.com>2012-07-08 23:03:05 +0400
commit0cae7c60ac6e6209c3d9a7cc64ad2298b7e27fe4 (patch)
treee1c77adaa95e5f370914640cb37cfb39664bf516 /activerecord/lib/rails/generators/active_record/migration/templates/migration.rb
parent7404cda9f61e41d52ce244d60abbf598684a96c4 (diff)
downloadrails-0cae7c60ac6e6209c3d9a7cc64ad2298b7e27fe4.tar.gz
rails-0cae7c60ac6e6209c3d9a7cc64ad2298b7e27fe4.tar.bz2
rails-0cae7c60ac6e6209c3d9a7cc64ad2298b7e27fe4.zip
Add references statements to migration generator
AddXXXToYYY/RemoveXXXFromYYY migrations are produced with references statements, for instance rails g migration AddReferencesToProducts user:references supplier:references{polymorphic} will generate the migration with: add_reference :products, :user, index: true add_reference :products, :supplier, polymorphic: true, index: true
Diffstat (limited to 'activerecord/lib/rails/generators/active_record/migration/templates/migration.rb')
-rw-r--r--activerecord/lib/rails/generators/active_record/migration/templates/migration.rb20
1 files changed, 16 insertions, 4 deletions
diff --git a/activerecord/lib/rails/generators/active_record/migration/templates/migration.rb b/activerecord/lib/rails/generators/active_record/migration/templates/migration.rb
index b1a0f83b5f..34eaffcb0f 100644
--- a/activerecord/lib/rails/generators/active_record/migration/templates/migration.rb
+++ b/activerecord/lib/rails/generators/active_record/migration/templates/migration.rb
@@ -2,30 +2,42 @@ class <%= migration_class_name %> < ActiveRecord::Migration
<%- if migration_action == 'add' -%>
def change
<% attributes.each do |attribute| -%>
+ <%- if attribute.reference? -%>
+ add_reference :<%= table_name %>, :<%= attribute.name %><%= attribute.inject_options %>
+ <%- else -%>
add_column :<%= table_name %>, :<%= attribute.name %>, :<%= attribute.type %><%= attribute.inject_options %>
<%- if attribute.has_index? -%>
add_index :<%= table_name %>, :<%= attribute.index_name %><%= attribute.inject_index_options %>
<%- end -%>
+ <%- end -%>
<%- end -%>
end
<%- else -%>
def up
<% attributes.each do |attribute| -%>
- <%- if migration_action -%>
- <%= migration_action %>_column :<%= table_name %>, :<%= attribute.name %>
+<%- if migration_action -%>
+ <%- if attribute.reference? -%>
+ remove_reference :<%= table_name %>, :<%= attribute.name %><%= ', polymorphic: true' if attribute.polymorphic? %>
+ <%- else -%>
+ remove_column :<%= table_name %>, :<%= attribute.name %>
<%- end -%>
<%- end -%>
+<%- end -%>
end
def down
<% attributes.reverse.each do |attribute| -%>
- <%- if migration_action -%>
+<%- if migration_action -%>
+ <%- if attribute.reference? -%>
+ add_reference :<%= table_name %>, :<%= attribute.name %><%= attribute.inject_options %>
+ <%- else -%>
add_column :<%= table_name %>, :<%= attribute.name %>, :<%= attribute.type %><%= attribute.inject_options %>
<%- if attribute.has_index? -%>
add_index :<%= table_name %>, :<%= attribute.index_name %><%= attribute.inject_index_options %>
<%- end -%>
<%- end -%>
<%- end -%>
+<%- end -%>
end
<%- end -%>
-end
+end \ No newline at end of file