Schienen: Best practice zum speichern der Benutzer-Einstellungen?
Frage ich mich, was der beste Weg ist, zum speichern der Benutzer-Einstellungen? Für eine web 2.0 app ich möchten, dass Benutzer in der Lage sein, um bestimmte Einstellungen auswählen. Im moment ist es nur, wenn empfangen von E-Mail-Benachrichtigungen.
Die einfachste Möglichkeit wäre, einfach ein Modell erstellen, "Einstellungen" und eine Spalte für jede Einstellung und haben dann eine 1-1-Beziehung mit den Nutzern.
Aber ist es ein Muster, um dieses Problem zu lösen besser? Ist es vielleicht besser ist, zum speichern von Informationen, die in der user-Tabelle selbst? Oder soll ich eine Tabelle mit "settings_name" und "settings_value" vollkommen offen zu sein über die Art der gespeicherten Einstellungen dort (ohne irgendwelche Migrationen beim hinzufügen von Optionen)?
Was ist Ihre Meinung?
Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden wir das hilfreiche plugin namens HasEasy. Es speichert die Daten in einer vertikalen Tabelle, aber ermöglicht das hinzufügen von Validierungen, pre/post-Lagerung-Verarbeitung, Arten, etc.
Wenn Sie PostgreSQL verwenden, die beste Lösung ist die Verwendung https://github.com/diogob/activerecord-postgres-hstore/. Es ist eine einfache, schnelle und zuverlässige Möglichkeit zum speichern von hashes in der Datenbank. Da es nicht nur eine serialisierte text-Feld, können Sie Ihre Suche auf es auch, und Sie brauchen nicht eine neue Tabelle zu erstellen, wie in HasEasy.
Den "öffnen" - Tabelle Ansatz macht es schwierig, Modell mit AR, da Sie sich sorgen über die Arten von Daten (boolean, int, string, etc). Ich habe immer Hinzugefügt prefs als Spalten in der Benutzer-Tabelle, und verschieben Sie dann zu einem user_preferences Tabelle, wenn es "zu viele" von Ihnen. Es ist einfach, und es ist einfach, mit zu arbeiten.
Wenn die Benutzer-Einstellungen sind nicht dazu gedacht, auffindbar sein (über einen Benutzer.find_by_x_preference, z.B.), können Sie auch speichern Sie in einem serialisierten Spalte als hash. Dies ist die use-case beschrieben, in die rails docs (http://www.railsbrain.com/api/rails-2.3.2/doc/index.html?a=M002334&name=serialize#), eigentlich.
:favorite_food => pizza
es gibt keinen einfachen Weg, um die Standardeinstellungen für alle Benutzer, die es wäre, wenn gab es eine einfache DB-Spalte.