10

Zajmuję się tworzeniem aplikacji wielodostępnej po this article. Problem polega na tym, że po raz pierwszy przeprowadzam wszystkie migracje. W pliku schema.rb znajdują się tylko tabele dla publicznego schematu, ale co się stało z innymi schematami? i jak mogę tworzyć inne schematy o innej strukturze niż public Nie chcę używać klejnotów.Użycie Postgres Baza danych wielu schematów w Railsach

patrz przykład poniżej

tabeli mają być tworzone na schemacie publicznym

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 

Tabela zostać utworzony dla schematów prywatnych

class CreateObjectives < ActiveRecord::Migration 

    include MultiSchema 

    def change 
    with_in_schemas :except => :public do 
     # Create objectives table 
    end 
    end 
end 

schema.rb

ActiveRecord::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 
+0

Nie rozumiem, dlaczego potrzebujesz wielu schematów? Nie możesz użyć tylko jednego i uniemożliwić użytkownikom dostęp do pewnych informacji na podstawie ich roli? –

+0

Używam i kochałem Postgreza od lat i bardzo dobrze znam schematy i ich użycie. Jestem także programistą Rails. Powiedziałem, że nigdy nie * użyłbym tych dwóch razem, chyba że musiałbym. Nie musisz. Po prostu zaprojektuj układ danych (zwykle nazywam to "schematem", ale nie chcę mylić tego problemu) i dodam kolejną tabelę o nazwie "firma" lub cokolwiek, co jest właścicielem rekordów. Następnie nadaj mu własność w różnych tabelach. Mam kilka takich aplikacji i nie jest to trudne. –

Odpowiedz

1

Czy znasz klejnot mieszkania? https://github.com/influitive/apartment

Użyłem w projekcie w tym roku, że jeden obsługuje wiele schematów z postgresql. Wszystko jest udokumentowane i łatwe w użyciu. Możesz wybrać tryb Middleware. Na przykład, gdy uzyskujesz dostęp do domeny customer.applicationdomain.com, aplikacja może wybrać dla ciebie odpowiedni schemat. Przy okazji możesz też używać zadań tła z sidekiq.

+0

Pytanie w szczególności mówi, że klejnoty nie są opcją. – Djizeus