7
A
回答
3
在非Rails項目中有一個使用Rails數據庫遷移的gem。它的名字是「standalone_migrations」
這裏是一個鏈接
4
1
如果你不喜歡用耙,但仍獲得的系統的一部分ActiveRecord :: Migration,那麼你可以使用以下來處理普通紅寶石(沒有任何導軌)的起伏:
require 'active_record'
require 'benchmark'
# Migration method, which does not uses files in db/migrate but in-memory migrations
# Based on ActiveRecord::Migrator::migrate
def migrate(migrations, target_version = nil)
direction = case
when target_version.nil?
:up
when (ActiveRecord::Migrator::current_version == target_version)
return # do nothing
when ActiveRecord::Migrator::current_version > target_version
:down
else
:up
end
ActiveRecord::Migrator.new(direction, migrations, target_version).migrate
puts "Current version: #{ActiveRecord::Migrator::current_version}"
end
# MigrationProxy deals with loading Migrations from files, we reuse it
# to create instances of the migration classes we provide
class MigrationClassProxy < ActiveRecord::MigrationProxy
def initialize(migrationClass, version)
super(migrationClass.name, version, nil, nil)
@migrationClass = migrationClass
end
def mtime
0
end
def load_migration
@migrationClass.new(name, version)
end
end
# Hash of all our migrations
migrations = {
2016_08_09_2013_00 =>
class CreateSolutionTable < ActiveRecord::Migration[5.0]
def change
create_table :solution_submissions do |t|
t.string :problem_hash, index: true
t.string :solution_hash, index: true
t.float :resemblance
t.timestamps
end
end
self # Necessary to get the class instance into the hash!
end,
2016_08_09_2014_16 =>
class CreateProductFields < ActiveRecord::Migration[5.0]
# ...
self
end
}.map { |key,value| MigrationClassProxy.new(value, key) }
ActiveRecord::Base.establish_connection(
:adapter => 'sqlite3',
:database => 'XXX.db'
)
# Play all migrations (rake db:migrate)
migrate(migrations, migrations.last.version)
# ... or undo them (rake db:migrate VERSION=0)
migrate(migrations, 0)
class ApplicationRecord < ActiveRecord::Base
self.abstract_class = true
end
class SolutionSubmission < ApplicationRecord
end
相關問題
- 1. Rails 3,使用外鍵生成遷移
- 2. Rails遷移未生成遷移文件
- 3. 無法在rails上生成遷移2.3.4
- 4. Rails - 從模型生成遷移腳本
- 5. 帶選項的Rails遷移生成
- 6. 從模式生成Rails遷移
- 7. Rails遷移以生成日曆表
- 8. Rails遷移和架構(生成/銷燬)
- 9. Rails的生成遷移文件支架
- 10. Rails從模型生成遷移
- 11. Rails的遷移回滾:如何刪除生成的遷移
- 12. rails g遷移「命令」以生成列重命名遷移?
- 13. 「遷移:創建」和「遷移:生成」之間有什麼區別?
- 14. 學說1.2生成的遷移-Diff,產生唯一的外鍵遷移
- 15. 生成遷移新表
- 16. FuelPHP Oil生成空遷移
- 17. 自動生成新遷移
- 18. 續集生成遷移
- 19. Rails的遷移產生不產生列
- 20. 有沒有辦法不生成在rails中的遷移文件
- 21. Rails 5 - 在rake任務中生成並運行遷移
- 22. 我無法在rails中生成模型或遷移
- 23. 在Rails遷移中遷移數據
- 24. 不完全遷移 - 停留在生成新遷移
- 25. 在Rails之外使用Rails的生成器?
- 26. 插入Rails的兩個現有的遷移之間的遷移
- 27. Rails遷移問題 - 外鍵未創建
- 28. Rails遷移後沒有PostgreSQL外鍵
- 29. Rails ActiveRecord遷移成功遷移後不創建一些列
- 30. Rails has_and_belongs_to_many遷移
雖然這個鏈接可以回答這個問題,最好在這裏包含答案的重要部分,並提供參考鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。 – 2012-10-04 08:24:06