PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Migrations Rails pour les schémas postgreSQL

J'ai une bibliothèque schema_utils que j'utilise et qui utilise la méthode suivante pour gérer les migrations :

  def self.with_schema(schema_name, &block)
    conn = ActiveRecord::Base.connection
    old_schema_search_path = conn.schema_search_path
    conn.schema_search_path = schema_name
    begin
      yield
    ensure
      conn.schema_search_path = old_schema_search_path
    end
  end

J'utilise ensuite les migrations normalement pour pouvoir continuer à appeler rake:migrateMaintenant, dans vos migrations, vous pouvez utiliser :

...
schemas.each do |schema|
  SchemaUtils.with_schema(schema) do
    #Put migration code here
    #e.g. add_column :xyz, ...
  end
end

Étant donné que j'ai tendance à mapper des schémas sur des codes de compte, je procède comme suit :

Account.for_each do |account|
  SchemaUtils.with_schema(account.code) do
    #Put migration code here
  end
end