Ich habe ein User
Modell, das has_one Profile
(gehört zu Benutzer). Der Einfachheit halber sage ich nur, dass das Profil ein location
Feld und ein occupation
Feld hat.Schienen: Aufbau einer has_one Beziehung in einem Modell mit Omniauth
Ich benutze Omniauth
, um Benutzer zu erstellen, aber ich möchte auch das beigefügte Profile
zur gleichen Zeit erstellen. Derzeit ist meine create
von omniauth Methode ist wie folgt:
def self.create_from_omniauth(omniauth_data)
full_name = omniauth_data["info"]["name"].split(" ")
User.create(
provider: omniauth_data["provider"],
uid: omniauth_data["uid"],
first_name: full_name[0],
last_name: full_name[1],
email: omniauth_data["info"]["email"],
password: SecureRandom.hex(16)
)
end
Ich frage mich, wie ich soll das Gebäude des Profils in dem enthalten. Ich weiß mit has_one habe ich Zugriff auf die build_profile
Methode, aber ich möchte auch sicherstellen, dass es richtig mit meinem Benutzerobjekt verbunden ist. Jeder Einblick in, wie ich diese create_from_omniauth
Aktion neu formatieren sollte, um das zugehörige Profile
neben dem User
Objekt richtig zu errichten, würde extrem nützlich sein.
Es gibt mindestens zwei Möglichkeiten und wenn Sie die dritte Zeile in 'user = User.create' ändern, können Sie' user.create_profile() 'ausführen. Statt 'User.create' und' user.create_profile' verwenden Sie build und speichern dann alles auf einmal mit 'user.save' –