gpt4 book ai didi

mysql - 从应用程序创建迁移

转载 作者:行者123 更新时间:2023-11-29 14:53:34 25 4
gpt4 key购买 nike

我想创建迁移以从我的 Rails 应用程序添加列(不是通过 rails g migration xxxx),在创建迁移时我想将版本号存储到 以便以后可能进行迁移向下操作。

场景是,我有一个包含通用表及其字段的应用程序。该应用程序可以为多个客户部署。我想提供一种在表中定义自定义字段的方法。一旦用户选择/输入所需的数据,如表名、字段名、数据类型等,我将创建一个新的迁移来添加字段并将版本号存储在数据库中的某个位置。如果用户决定删除该字段,此版本号将用于migrate:down

还有比这更好的方法吗?

最佳答案

我的实现如下:根据 field_nametable_name,我使用以下方法创建迁移:

def create_migration
field_name_for_db = field_name.gsub(' ', '_').downcase
migration_name = "add_column_#{self.field_name}_to_#{self.table_name}"
logger.info "cd #{Rails.root} && rails g migration #{migration_name} #{self.field_name}:string > #{Rails.root}/tmp/migration_details.txt && rake db:migrate"
system "cd #{Rails.root} && rails g migration #{migration_name} #{self.field_name}:string > #{Rails.root}/tmp/migration_details.txt && rake db:migrate"
migration_version = File.read("#{Rails.root}/tmp/migration_details.txt").split('/').last.split("_#{migration_name}").first
self.migration_name = migration_name
self.migration_version = migration_version
self.save
end

在此方法中,我将创建迁移命令的输出重定向到一个文件,并从该文件中检索迁移编号,然后将其存储到数据库中。

关于mysql - 从应用程序创建迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5193979/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com