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