2

Ich habe eine Ansicht namens my_view, die ich mit der folgenden Migration erstellt habe.Schienenmigration zum Ändern der vorhandenen Datenbankansicht

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 

jetzt brauche ich ein anderes Feld, sagen my_new_field von table1 in my_view zur Verfügung stehen. Aber ich habe keine Idee, wie man die Migration dafür schreibt. Jede Hilfe wird sehr geschätzt. Dank

Antwort

2

Was einfach Neuerstellung der Ansicht:

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

Dank ich, dass –

+0

versuchen wird, die einen Fehler gibt 'Active :: StatementInvalid: PG :: InvalidTableDefinition: FEHLER: kann nicht Namen Ansicht Spalte„created_at“ändern to "my_new_field" ' –

+0

Versuchen Sie den Drop-View-Teil erneut hinzuzufügen. – irene

Verwandte Themen