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.


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 => "guy@gmail.com", :roles => ["admin"], :password => "111111", :password_confirmation => "111111" }).save(false)

Sonst würde ich das machen

User.create!({:email => "guy@gmail.com", :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.


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 => "user@name.com", :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.


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: 'superadmin1@testing.com', password: 'password', password_confirmation: 'password'})
newuser.skip_confirmation!
newuser.save

b. oder verwenden Sie bestätigen! ::

newuser = User.new({email: 'superadmin2@testing.com', password: 'password', password_confirmation: 'password'})
newuser.confirm!
newuser.save

6

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

    u = User.new({
      email: 'demo@greenant.com.br',
      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.


Update: confirm!ist jetzt nurconfirm
Shadow Radiance

2

Keine der oben genannten Antworten hat bei mir funktioniert.

Das habe ich getan:

User.create(email: "a@a.com", password: "asdasd", password_confirmation: "asdasd")

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.