提交 8cbe22ab 编写于 作者: J Jeremy Kemper

Migrations: gracefully handle missing migration files. Closes #5857.

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@4809 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
上级 32dcfa69
*SVN*
* Migrations: gracefully handle missing migration files. #5857 [eli.gordon@gmail.com]
* MySQL: update test schema for MySQL 5 strict mode. #5861 [Tom Ward]
* to_xml: correct naming of included associations. #5831 [josh.starcher@gmail.com]
......
......@@ -382,7 +382,8 @@ def down?
end
def reached_target_version?(version)
(up? && version.to_i - 1 == @target_version) || (down? && version.to_i == @target_version)
return false if @target_version == nil
(up? && version.to_i - 1 >= @target_version) || (down? && version.to_i <= @target_version)
end
def irrelevant_migration?(version)
......
class PeopleHaveMiddleNames < ActiveRecord::Migration
def self.up
add_column "people", "middle_name", :string
end
def self.down
remove_column "people", "middle_name"
end
end
\ No newline at end of file
class PeopleHaveLastNames < ActiveRecord::Migration
def self.up
add_column "people", "last_name", :string
end
def self.down
remove_column "people", "last_name"
end
end
\ No newline at end of file
class WeNeedReminders < ActiveRecord::Migration
def self.up
create_table("reminders") do |t|
t.column :content, :text
t.column :remind_at, :datetime
end
end
def self.down
drop_table "reminders"
end
end
\ No newline at end of file
class InnocentJointable < ActiveRecord::Migration
def self.up
create_table("people_reminders", :id => false) do |t|
t.column :reminder_id, :integer
t.column :person_id, :integer
end
end
def self.down
drop_table "people_reminders"
end
end
\ No newline at end of file
......@@ -44,6 +44,7 @@ def teardown
Person.connection.remove_column('people', column) rescue nil
end
Person.connection.remove_column("people", "first_name") rescue nil
Person.connection.remove_column("people", "middle_name") rescue nil
Person.connection.add_column("people", "first_name", :string, :limit => 40)
Person.reset_column_information
end
......@@ -661,5 +662,18 @@ def test_migrator_with_duplicates
ActiveRecord::Migrator.migrate(File.dirname(__FILE__) + '/fixtures/migrations_with_duplicate/', nil)
end
end
def test_migrator_with_missing_version_numbers
ActiveRecord::Migrator.migrate(File.dirname(__FILE__) + '/fixtures/migrations_with_missing_versions/', 500)
assert !Person.column_methods_hash.include?(:middle_name)
assert_equal 4, ActiveRecord::Migrator.current_version
ActiveRecord::Migrator.migrate(File.dirname(__FILE__) + '/fixtures/migrations_with_missing_versions/', 2)
assert !Reminder.table_exists?
assert Person.column_methods_hash.include?(:last_name)
assert_equal 2, ActiveRecord::Migrator.current_version
end
end
end
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册