2013-05-17 2 views

Antwort

47

Ab Schienen 4, gibt es eine enable_extension Methode:

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

Ich tue dies nur in einer Migration

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

Sie können jede SQL dort ausführen ausführen. Ich mache es auch für Funktionen

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 

Auch braucht es nicht Postgres Benutzer, abhängig von der Erweiterung es sein muss Superuser oder Datenbank-Besitzer zu sein. Also auf meinen Dev-Boxen gebe ich dem User Super User Rechte für die Benutzerfreundlichkeit.

Verwandte Themen