Erstellen Sie einen Benutzer über die Ruby-Konsole

146

Haben Sie eine Idee, wie Sie ein neues Benutzerobjekt mit einem Gerät aus der Ruby-Konsole erstellen und speichern können?

Wenn ich versucht habe, es zu speichern, werde ich immer falsch. Ich vermisse wohl etwas, kann aber keine verwandten Informationen finden.

Martin
quelle
1
Keine Antwort auf Ihre Frage, und Sie kennen Railcasts wahrscheinlich bereits, aber ich fand diese Videos nützlich, wenn ich etwas über Devise erfuhr : railscasts.com/episodes/209-introducing-devise , railscasts.com/episodes/210-customizing-devise . Dort gibt es noch ein paar wirklich nützliche Videos über Devise. Viel Glück.
2
Ja, ich habe sie beide gesehen, aber sie sagen nichts über das, was ich frage.
Martin

Antworten:

196

Sie können der Speichermethode false hinzufügen, um die Überprüfungen zu überspringen, wenn Sie möchten.

User.new({:email => "[email protected]", :roles => ["admin"], :password => "111111", :password_confirmation => "111111" }).save(false)

Sonst würde ich das machen

User.create!({:email => "[email protected]", :roles => ["admin"], :password => "111111", :password_confirmation => "111111" })

Wenn Sie das confirmableModul für die Entwicklung aktiviert haben, stellen Sie sicher, dass Sie den confirmed_atWert Time.nowbeim Erstellen auf etwa festlegen.

jspooner
quelle
51
Sieht so aus, als wäre save (false) dekreatiert, sollte jetzt save (: validate => false) sein
Martin
9
Hier passiert einfach so viel Magie. Das Benutzermodell erweitert Active Record. Wie kommt es, dass die Erstellungsmethode überschrieben wird? Wo wird das Passwort verschlüsselt?
CodeAnand
2
Was macht der Devise-Aufruf tatsächlich
CodeAnand
Scheint eine falsche Vorgehensweise zu sein. Durch diese Methode der erzwungenen Validierung (oder des Überspringens der Validierung) wird das verschlüsselte Kennwort nicht festgelegt, sodass dieser Datensatz in der realen App unbrauchbar wird.
VPaul
79

Sie sollten dies mit tun können

u = User.new(:email => "[email protected]", :password => 'password', :password_confirmation => 'password')
u.save

Wenn dies false zurückgibt, können Sie anrufen

u.errors

um zu sehen, was schief gelaufen ist.

Sam Ritchie
quelle
17
Wenn Sie: verifyable verwenden, vergessen Sie nicht, auch das Attribut: verify_at auf Time.now zu setzen, damit Sie sich sofort anmelden können.
David Sulc
9
Als Abkürzung, wenn Sie verwenden Confirmable, rufen Sieu.confirm!
Captainpete
30

Wenn Ihr Modell über eine bestätigbare Option verfügt, bedeutet dies, dass der Objektbenutzer zuerst bestätigt werden sollte. Sie können den Benutzer auf zwei Arten speichern.

ein. Zuerst wird die Bestätigung übersprungen:

newuser = User.new({email: '[email protected]', password: 'password', password_confirmation: 'password'})
newuser.skip_confirmation!
newuser.save

b. oder verwenden Sie bestätigen! ::

newuser = User.new({email: '[email protected]', password: 'password', password_confirmation: 'password'})
newuser.confirm!
newuser.save
Akbarbin
quelle
6

Wenn Sie das Senden von Bestätigungs-E-Mails vermeiden möchten , ist die beste Wahl:

    u = User.new({
      email: '[email protected]',
      password: '12feijaocomarroz',
      password_confirmation: '12feijaocomarroz'
    })

    u.confirm
    u.save

Wenn Sie also eine gefälschte E-Mail verwenden oder keine Internetverbindung haben, werden Fehler vermieden.

Flavio Wuensche
quelle
Update: confirm!ist jetzt nurconfirm
Shadow Radiance
2

Keine der oben genannten Antworten hat bei mir funktioniert.

Das habe ich getan:

User.create(email: "[email protected]", password: "asdasd", password_confirmation: "asdasd")

Beachten Sie, dass das Passwort größer als 6 Zeichen sein muss.

Ezequiel Ramiro
quelle