Ich entwickle eine Multitenant-App nach this article. Das Problem ist, wenn ich alle Migrationen das erste Mal ausführe. In schema.rb
Datei sind nur die Tabellen für das öffentliche Schema aber was ist mit den anderen Schemas passiert? und wie kann ich andere Schemas mit unterschiedlicher Struktur zu der public
erstellen Ich möchte keine Edelsteine verwenden.Postgres Multiple Schema-Datenbank in Rails verwenden
siehe Beispiel unten
Tisch für öffentliches Schema
class CreatePerspectives < ActiveRecord::Migration include MultiSchema def up with_in_schemas :only => :public do # Create table perspectives end end def down with_in_schemas :only => :public do drop_table :prespectives end end end
Tabelle erstellt wird für private Schemata
class CreateObjectives < ActiveRecord::Migration
include MultiSchema
def change
with_in_schemas :except => :public do
# Create objectives table
end
end
end
schema.rb
erstellt werdenActiveRecord::Schema.define(version: 20130810172443) do
create_table "perspectives", force: true do |t|
t.string "name"
t.datetime "created_at"
t.datetime "updated_at"
end
end
Ich verstehe nicht, warum Sie mehrere Schemas benötigen? Können Sie nicht nur einen verwenden und bestimmte Informationen für Benutzer aufgrund ihrer Rolle unzugänglich machen? –
Ich habe Postgres seit Jahren benutzt und geliebt und bin sehr vertraut mit Schemas und deren Verwendung. Ich bin auch ein Rails-Entwickler. Das heißt, ich würde die beiden niemals zusammen benutzen, wenn es nicht nötig wäre. Du musst nicht. Entwerfe einfach dein Datenlayout (normalerweise würde ich dies ein "Schema" nennen, aber ich möchte das Problem nicht verwirren) und füge eine weitere Tabelle namens "Firma" hinzu oder was auch immer die Datensätze besitzen. Dann geben Sie es in verschiedenen Tabellen. Ich habe ein paar Apps wie diese und es ist nicht schwer. –