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
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? –
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. –