在Rails迁移中,我必须从Rails迁移文件中提取RAW SQL而不迁移。
这是转换示例:
在Rails迁移中:
# 20230918004257_add_some_column_to_table.rb
class AddSomeColumnToTable < ActiveRecord::Migration[6.1]
def change
add_column :table, :column_a, :string, comment: 'column a'
add_column :table, :column_b, :string, comment: 'column b'
add_column :table, :column_c, :string, comment: 'column c'
end
end
提取的SQL:
ALTER TABLE `table` ADD `column_a` varchar(255) COMMENT 'column_a';
ALTER TABLE `table` ADD `column_b` varchar(255) COMMENT 'column_b';
ALTER TABLE `table` ADD `column_c` varchar(255) COMMENT 'column_c';
无论我在ActiveRecord::Migration中查找了多少,我都没有看到一个方法可以简单地提取SQL而不做任何其他事情。我怎么能只做一个简单的SQL提取?
1条答案
按热度按时间wz1wpwve1#
1.要执行所有迁移查询,请使用整个文件
db/structure.sql
Rails中有两种模式转储:
db/schema.rb
和db/structure.sql
如果你需要使用原始SQL -使用第二个。要启用此功能,请将此行添加到
config/application.rb
1.提取给定迁移的SQL查询的最简单方法是执行
您可以查看
db/structure.sql
的git diff
从控制台运行迁移并复制输出的另一种方法
为了防止数据库的真实的更新,您可以使用transaction Package 此代码并回滚它
也可以在Rails控制台沙箱中调用这个方法(所有更改将在退出时回滚),以进入此模式