MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Was sind gute Möglichkeiten, aktuelle Benutzerdetails in Modellen abzurufen?

Die Zugriffskontrolle in Rails erfolgt auf Controller-Ebene, nicht auf Modellebene. Infolgedessen bietet Rails keinen Mechanismus für den Zugriff auf den aktuellen Benutzer, Cookies usw. aus dem Modellcode heraus. Sie können die Daten bei Bedarf von Parametern zu Methoden in das Modell überführen. Das würde jedoch die Designentscheidungen einiger der besten Programmierer der Branche ignorieren, also denke ich, dass es wahrscheinlich keine gute Wahl ist.

Mit anderen Worten, tun Sie nicht, was Sie zu tun versuchen. Bringen Sie das Wissen darüber, wie Dinge zu tun sind, in Ihr Modell, aber legen Sie im Controller fest, wer sie ausführen kann.

Wenn Sie andererseits aus irgendeinem Grund versuchen, den aktuellen Benutzer zu speichern, sollten Sie dies durch eine Art Assoziation (oder ein verschachteltes Dokument, da Sie Mongo verwenden) tun. Verwenden Sie in diesem Fall nicht current_user innerhalb des Modells, sondern machen Sie einen attr_accessor Legen Sie für den Benutzer für die Instanz Ihres Modells den Benutzer current_user fest in der Steuerung, und speichern Sie es dann wie Sie es in Ihrem Rückruf benötigen.