2

我有一个名为my_view的视图,它是使用以下迁移创建的。用于更改现有数据库视图的Rails迁移

class CreateMyView < ActiveRecord::Migration 
    def change 
    execute <<-SQL 
     drop view if exists my_view 
    SQL 

    execute <<-SQL 
     CREATE OR REPLACE VIEW my_view AS 
     SELECT 
     t1.wfs_id, 
     t1.step_id, 
     t1.status, 
     t1.applied_by, 
     t2.created_at, 
     t2.is_wfs_end, 
     t2.app_status AS flowstep 
     FROM table1 t1 
     JOIN table2 t2 ON t1.wfs_id = t2.wfs_id 
     WHERE t1.del_flag = false; 
    SQL 
    end 
end 

现在我需要另一个领域,说my_new_fieldtable1my_view可用。但我不知道如何为此写入迁移。任何帮助非常感谢。由于

回答

2

什么简单地重新创建视图:

class ChangeMyView < ActiveRecord::Migration 
    def change 
    execute <<-SQL 
     drop view if exists my_view 
    SQL 

    execute <<-SQL 
     CREATE OR REPLACE VIEW my_view AS 
     SELECT 
     t1.wfs_id, 
     t1.step_id, 
     t1.status, 
     t1.applied_by, 
     t1.my_new_field, 
     t2.created_at, 
     t2.is_wfs_end, 
     t2.app_status AS flowstep 
     FROM table1 t1 
     JOIN table2 t2 ON t1.wfs_id = t2.wfs_id 
     WHERE t1.del_flag = false; 
    SQL 
    end 

end 
+0

谢谢,我会尝试, –

+0

这给出了一个错误'的ActiveRecord :: StatementInvalid:PG :: InvalidTableDefinition:错误:无法更改视图列“created_at”的名字到“my_new_field”# –

+0

尝试再次添加drop-view-part。 – irene