Rails: Zuordnung nach Speichern validieren?

Ich habe einUser Modell, das viele hatroles. Rollen enthält auser_id Feld, das ich willvalidate_presence_of

Das Problem ist: Wenn ich dem Benutzer beim Erstellen eine Rolle zuweise, schlägt die Überprüfung fehl, da keine Benutzer-ID festgelegt ist. Jetzt ichtun Ich möchte überprüfen, ob eine Benutzer-ID vorhanden ist, muss den Benutzer jedoch speichern, bevor ich dies überprüfe.

Der Code sieht derzeit so aus:

@user = User.new(params[:user])
@user.roles << Role.new(:name => 'Peon') unless @user.has_roles?
if @user.save
  # ...

Die einzige Möglichkeit, das Problem zu umgehen, besteht darin, entweder die Überprüfung zu deaktivieren, die ich nicht ausführen möchte, oder die Datenbank doppelt zu speichern, was nicht gerade effizient ist.

Wie wird dieses Problem standardmäßig behandelt?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage