sql - 如何在 Rails 的迁移中编写 SQL

标签 sql postgresql ruby-on-rails-3 migration rails-activerecord

我有以下需要执行的 SQL

CREATE TABLE cars_users2 AS SELECT DISTINCT * FROM cars_users;

DROP TABLE cars_users;

ALTER TABLE cars_users2 RENAME TO cars_users;

因为我不能使用 heroku dataclips 删除表,所以我不能使用 dataclips。

所以我想我需要在迁移中执行此操作。

如何将此 sql 编写为迁移?

最佳答案

对于向上迁移:

execute "CREATE TABLE cars_users2 AS SELECT DISTINCT * FROM cars_users;" 
drop_table :car_users  
rename_table :car_users2, :car_users  

向下:

raise ActiveRecord::IrreversibleMigration

完全迁移:

class TheMigration < ActiveRecord::Migration
    def up
        execute "CREATE TABLE cars_users2 AS SELECT DISTINCT * from cars_users;" 
        drop_table :car_users  
        rename_table :car_users2, :car_users  
    end

    def down
        raise ActiveRecord::IrreversibleMigration
    end
end

关于sql - 如何在 Rails 的迁移中编写 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14856856/

相关文章:

php - 连接 2 个表后未得到所需结果

sql - rails 。我为什么要使用 ActiveRecord?

postgresql - 从和到日期获取数据以获取所有匹配结果

ruby - 在 sidekiq worker 类中有多个方法

ruby-on-rails - 构建获取 IP 的中间件

mysql - 如何通过 mysql 中的连接提高性能排序

c# - 在 MySQL 中存储字符串

java - 使用 JPA 加入查询?

java - Spring Boot JPA @ColumnDefault 在 PostgreSQL 上被错误解释 : ERROR: cannot use column reference in DEFAULT expression

ruby-on-rails - select 子句中的 ActiveRecord 子查询