aboutsummaryrefslogtreecommitdiffstats
path: root/railties/lib/rails/generators/active_record/migration
diff options
context:
space:
mode:
authorYehuda Katz + Carl Lerche <ykatz+clerche@engineyard.com>2009-09-24 14:01:31 -0700
committerYehuda Katz + Carl Lerche <ykatz+clerche@engineyard.com>2009-09-24 16:11:41 -0700
commitf0dd77c6be6a86fe384bb0015151e0a497973d39 (patch)
treead81bb4c807c39edeaa37035882a16d9d95ebaa9 /railties/lib/rails/generators/active_record/migration
parent610b81beca461a6fa4f00c7023e0e4315eb2b8be (diff)
downloadrails-f0dd77c6be6a86fe384bb0015151e0a497973d39.tar.gz
rails-f0dd77c6be6a86fe384bb0015151e0a497973d39.tar.bz2
rails-f0dd77c6be6a86fe384bb0015151e0a497973d39.zip
Move railties/lib/* into railties/lib/*
Diffstat (limited to 'railties/lib/rails/generators/active_record/migration')
-rw-r--r--railties/lib/rails/generators/active_record/migration/migration_generator.rb25
-rw-r--r--railties/lib/rails/generators/active_record/migration/templates/migration.rb11
2 files changed, 36 insertions, 0 deletions
diff --git a/railties/lib/rails/generators/active_record/migration/migration_generator.rb b/railties/lib/rails/generators/active_record/migration/migration_generator.rb
new file mode 100644
index 0000000000..f6159deeeb
--- /dev/null
+++ b/railties/lib/rails/generators/active_record/migration/migration_generator.rb
@@ -0,0 +1,25 @@
+require 'rails/generators/active_record'
+
+module ActiveRecord
+ module Generators
+ class MigrationGenerator < Base
+ argument :attributes, :type => :array, :default => [], :banner => "field:type field:type"
+
+ def create_migration_file
+ set_local_assigns!
+ migration_template "migration.rb", "db/migrate/#{file_name}.rb"
+ end
+
+ protected
+ attr_reader :migration_action
+
+ def set_local_assigns!
+ if file_name =~ /^(add|remove)_.*_(?:to|from)_(.*)/
+ @migration_action = $1
+ @table_name = $2.pluralize
+ end
+ end
+
+ end
+ end
+end
diff --git a/railties/lib/rails/generators/active_record/migration/templates/migration.rb b/railties/lib/rails/generators/active_record/migration/templates/migration.rb
new file mode 100644
index 0000000000..bbb7c53d86
--- /dev/null
+++ b/railties/lib/rails/generators/active_record/migration/templates/migration.rb
@@ -0,0 +1,11 @@
+class <%= migration_class_name %> < ActiveRecord::Migration
+ def self.up<% attributes.each do |attribute| %>
+ <%= migration_action %>_column :<%= table_name %>, :<%= attribute.name %><% if migration_action == 'add' %>, :<%= attribute.type %><% end -%>
+ <%- end %>
+ end
+
+ def self.down<% attributes.reverse.each do |attribute| %>
+ <%= migration_action == 'add' ? 'remove' : 'add' %>_column :<%= table_name %>, :<%= attribute.name %><% if migration_action == 'remove' %>, :<%= attribute.type %><% end -%>
+ <%- end %>
+ end
+end