Ich arbeite an einer Multi-User-App mit mehreren Accounts, bei der ein Account n Nutzer haben kann. Es ist sehr wichtig, dass jeder Benutzer nur auf Informationen von seinem Konto zugreifen kann. Mein Ansatz besteht darin, jedem Modell in der DB eine account_id hinzuzufügen und dann in jedem Controller einen Filter hinzuzufügen, um nur Objekte mit der aktuellen account_id auszuwählen. Ich werde das Autorisierungs-Plugin verwenden.Wie wird immer ein Wert für account-scope in Rails festgelegt?
Ist dieser Ansatz eine gute Idee?
Was ist der beste Weg, um immer die account_id für jedes Objekt festlegen, ohne das Schreiben
object.account = @current_account
in jeder Aktion CREATE erstellt wird? Vielleicht ein Filter?
Auch bin ich mir nicht sicher über die beste Möglichkeit, den Filter für die Auswahloptionen zu implementieren. Ich brauche etwas wie eine allgemeine Bedingung: Egal was sonst in der SQL-Anweisung erscheint, es gibt immer ein "WHERE account_id = XY".
Danke für Ihre Hilfe!
Well Ich könnte das tun und meine current_account-Methode verwenden, aber dann muss ich jede Aktion ändern. Gibt es keinen einfacheren Weg? Ich habe sogar darüber nachgedacht, die Methode find/create zu patchen, weil ich immer den gleichen Wert einstelle (für einen angemeldeten Benutzer). –
Tun Sie es in jeder Aktion ist kein Problem. Es ist ein einmaliger Versuch, und es dauert 5 Minuten. Es macht auch Ihren Code leicht zu verstehen - es ist genau dort, Sie müssen nicht auf die Abstraktionen schauen. –
Es ist ein wenig mehr als 5 Minuten, aber nach einer Menge Ärger und Monkeypathing mit meiner Lösung werde ich es einfach auf die Schienen machen. Vielen Dank. –