2013-05-17 13 views

Odpowiedz

47

Na szyn 4, jest enable_extension Metoda:

class AddFuzzyStringMatching < ActiveRecord::Migration 
    def change 
    enable_extension "fuzzystrmatch" 
    end 
end 
5

po prostu zrobić to w migracji

class AddCryptoToDb < ActiveRecord::Migration 
    def up 
    execute <<-SQL 
     CREATE extension IF NOT EXISTS pgcrypto; 
    SQL 
    end 
end 

Można wykonać dowolny żądany plik sql. Ja też to zrobić dla funkcji

class BuildFnSetWebUsersUid < ActiveRecord::Migration 
    def up 
    say "building fn_set_web_users_uid function" 
    execute <<-SQL 
     CREATE OR REPLACE FUNCTION fn_set_web_users_uid() 
     RETURNS trigger AS 
     $BODY$ 
     BEGIN 
      IF NEW.uid IS NULL THEN 
      SELECT UID into NEW.uid 
      FROM generate_series(10000, (SELECT last_value FROM web_users_uid_seq)) AS s(uid) 
      EXCEPT 
      SELECT uid FROM web_users 
      ORDER BY uid; 
      IF NEW.uid is NULL THEN 
       SELECT nextval('web_users_uid_seq') INTO NEW.uid; 
      END IF; 
      END IF; 
      RETURN NEW; 
     END; 
     $BODY$ 
     LANGUAGE 'plpgsql'; 
    SQL 
    end 

    def down 
    execute "DROP FUNCTION IF EXISTS fn_set_web_users_uid;" 
    end 
end 

Także to nie musi być postgres użytkownik, w zależności od rozszerzenia musi być superużytkownikiem lub bazy danych właściciela. Tak więc w moich skrzynkach programistycznych przekazuję użytkownikowi prawa użytkownika w celu ułatwienia korzystania z niego.

Powiązane problemy