Was ich versuche, Folgendes zu tun ist:Verwalten Kind-Beziehungen mit einem verschachtelten Attribute bilden
Zu jeder Zeit ein Benutzer ein aktives Profil hat. Dieses aktive Profil muss von einem Administrator autorisiert werden, um sicherzustellen, dass es den Regeln und Vorschriften der Site entspricht. Wenn ein Benutzer sein Profil bearbeitet, bleibt sein öffentliches Profil erhalten, bis der Administrator die Änderungen abbildet. Wenn sie eine Bearbeitung vornehmen, während ihr Profil überprüft wird, werden ihre Änderungen auf das ausstehende Profil zur Überprüfung angewendet und an die Rückseite der Warteschlange verschoben.
Meine Modelle in etwa so aussehen:
class Profile < AR:B
belongs_to :user
end
class User < AR:B
has_many :profiles do
def active
...
end
def latest
end
end
def profile
self.profiles.active
end
end
Es gibt einen kleinen Twist ... soll der Benutzer das Profil bearbeiten direkt nicht in der Lage sein, da die Sammlung Profile nicht ausgesetzt ist. Stattdessen bearbeiten sie ihren Benutzer und die Profilfelder werden dort angezeigt.
Was ist der beste Weg, dies zu verwalten? Zur Zeit verwende ich:
accepts_nested_attributes_for :profiles
In den Benutzer, aber das scheint ziemlich hacky. Im Idealfall würde das meiste dieser Logik im Modell leben, aber die andere Sache, mit der ich flirte, ist die Verwendung eines Moderators.
Alle Gedanken würden sehr geschätzt, lassen Sie mich wissen, wenn Sie weitere Informationen als Kommentar benötigen, und ich werde diesen Beitrag entsprechend aktualisieren.
Ursprünglich dachte ich daran, es so zu machen, aber ich habe es abgelehnt, weil ich dachte, dass es nicht ideal wäre, aber deine Aufschrift hat mich davon überzeugt, dass es der richtige Weg ist und werde wahrscheinlich meine Meinung und die Logik in das Modell ist einfacher. – jonnii
Ich hätte wahrscheinlich erwähnen müssen, dass in diesem Fall die FK auf dem Benutzermodell sein muss, um zwischen den beiden Profilen zu unterscheiden, so dass es ein gehört, kein has_one. – jonnii
Ja, Sie haben Recht. Obwohl ein bisschen wackelig auf die Semantik, BD-bezogen, das wäre richtig. – Yaraher