Ich richte eine SaaS-Website ein, in der ich mehrere Clients habe, die alle ihre Workflows und Daten auf derselben Site verwalten - und damit dieselbe Datenbank.Was ist die beste Methode zum Erstellen von "ummauerten Gärten" für mehrere Clients in Ihrer Datenbank?
Ich bin nicht einmal sicher, ob es ein Wort für dieses Konzept gibt, aber gibt es eine etablierte Art der automatischen Trennung der Daten, so dass alle ActiveRecord Aufrufe an die Datenbank durch die richtige client_id des Benutzers gefiltert/eingeschränkt werden das ist eingeloggt?
Der einfache Weg wäre natürlich, einfach eine "where client_id = ?
" hinzuzufügen und die Client-ID des Benutzers ... am Ende jeder einzelnen ActiveRecord-Anfrage hinzuzufügen.
Gibt es irgendwelche vor Filter Idee für die Modelle, so dass jede Methode finden würde (einschließlich der dynamischen) auf die client_id
zu ihnen automatisch ?. Also könnte ich einfach Model.find_by_what_I_want(foo)
tun, und es würde automatisch wissen, um das auf nur Datensätze zu beschränken, die von der korrekten Klienten-ID besessen sind, obwohl ich es nicht ausdrücklich angegeben habe?
Welche DBMS verwenden Sie? –
Würde ** [Multitenancy] (http://en.wikipedia.org/wiki/Multenancy) ** das Wort für dieses Konzept sein? –