PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Verwenden mehrerer PostgreSQL-Schemas mit Rails-Modellen

PostgreSQL-Adapter schema_search_path in database.yml löst Ihr Problem?

development:
  adapter: postgresql
  encoding: utf-8
  database: solidus
  host: 127.0.0.1
  port: 5432
  username: postgres
  password: postgres
  schema_search_path: "discogs,public"

Oder Sie können für jedes Schema unterschiedliche Verbindungen angeben:

public_schema:
  adapter: postgresql
  encoding: utf-8
  database: solidus
  host: 127.0.0.1
  port: 5432
  username: postgres
  password: postgres
  schema_search_path: "public"

discogs_schema:
  adapter: postgresql
  encoding: utf-8
  database: solidus
  host: 127.0.0.1
  port: 5432
  username: postgres
  password: postgres
  schema_search_path: "discogs"

Erstellen Sie nach jeder definierten Verbindung zwei Modelle:

class PublicSchema < ActiveRecord::Base
  self.abstract_class = true
  establish_connection :public_schema
end

class DiscoGsSchema < ActiveRecord::Base
  self.abstract_class = true
  establish_connection :discogs_schema
end

Und alle Ihre Modelle erben vom jeweiligen Schema:

class MyModelFromPublic < PublicSchema
  set_table_name :my_table_name
end

class MyOtherModelFromDiscoGs < DiscoGsSchema
  set_table_name :disco
end

Ich hoffe, es hilft.