Rails 5:如何在数据库迁移中进行'migration partial'
Rails 5: How to make a 'migration partial' in database migrations
我有很多表使用相同的列名。我想将它们分成部分,这样我每次重新创建数据库时都可以编辑部分来更改列。
我试过:
水果迁移文件
class CreateFruit < ActiveRecord::Migration[5.0]
def change
create_table :fruits do |t|
partial
end
end
宠物迁移文件
class CreatePet < ActiveRecord::Migration[5.0]
def change
create_table :pets do |t|
partial
t.string :personality
end
end
部分文件(application.rb?)
def partial
t.string :name
t.string :size
end
但是,当 运行 迁移
时,我总是遇到语法错误
创建一个名为 db/migrate/_partial_migration.rb
:
的文件
class PartialMigration
class << self
def call(t)
t.string :name
t.string :size
end
end
end
在您的迁移中db/migrate/20180209112447_create_pet.rb
:
require_relative "./_partial_migration.rb"
class CreatePet < ActiveRecord::Migration[5.0]
def change
create_table :bar do |t|
PartialMigration.call(t)
t.string :personality
end
end
end
我有很多表使用相同的列名。我想将它们分成部分,这样我每次重新创建数据库时都可以编辑部分来更改列。
我试过:
水果迁移文件
class CreateFruit < ActiveRecord::Migration[5.0]
def change
create_table :fruits do |t|
partial
end
end
宠物迁移文件
class CreatePet < ActiveRecord::Migration[5.0]
def change
create_table :pets do |t|
partial
t.string :personality
end
end
部分文件(application.rb?)
def partial
t.string :name
t.string :size
end
但是,当 运行 迁移
时,我总是遇到语法错误创建一个名为 db/migrate/_partial_migration.rb
:
class PartialMigration
class << self
def call(t)
t.string :name
t.string :size
end
end
end
在您的迁移中db/migrate/20180209112447_create_pet.rb
:
require_relative "./_partial_migration.rb"
class CreatePet < ActiveRecord::Migration[5.0]
def change
create_table :bar do |t|
PartialMigration.call(t)
t.string :personality
end
end
end