Frage

Ich bin ganz neu in Ruby on Rails also bitte Geduld mit mir:)

Ich bin der Verarbeitung eine importierte CSV-Datei in Rails und ich möchte programmatisch neue Benutzer erstellen (ich die AuthLogic Gem bin mit zusammen mit Rollen Requirement), So Far verwende ich:

Beispiel Line:

Steve.Jobs@apple.com, Steve, Jobs, 555-APPLE

Code:

  def new_user(line)
    params = Hash.new
    params[:user] = Hash.new
    params[:user]["email"] = line[0]
    params[:user]["first_name"] = line[1]
    params[:user]["last_name"] = line[3]
    params[:user]["phone"] = line[4]
    user = User.new(params[:user])
    user.save
  end

Das Problem ist, dass dies nicht einen neuen Benutzer hinzufügt, versucht es aber nicht (DB von Rollback gefolgt Begin), gehe ich davon aus, weil ich nicht in allen Bereichen, wie Login, Passwort usw. füllen bin

Muss ich explizit Werte für diese Felder erzeugen?

War es hilfreich?

Lösung 2

Ok So habe ich es geschafft habe meine eigene Frage zu beantworten, wenn auch nicht in der idealsten Möglichkeiten:

 def new_user(line)
    params = Hash.new
    params[:user] = Hash.new
    params[:user]["email"] = line[0]
    params[:user]["first_name"] = line[1]
    params[:user]["last_name"] = line[2]
    params[:user]["phone"] = line[3]
    #generate random password of length 6
    password = ActiveSupport::SecureRandom.base64(6) 
    #generate username by adding first and last name + 3 random characters
    username = (line[1] + line[2])
    username = username + ActiveSupport::SecureRandom.base64(3)
    params[:user]["login"] = username
    params[:user]["password"] = password
    params[:user]["password_confirmation"] = password

    #check to see if user already exists
    @existing_user = User.find_by_email(line[0])

    if(@existing_user)
      #user exists
      #do nothing
    else
      #user is brand new
      @new_user = User.new(params[:user])
      @new_user.reset_persistence_token
      if(@new_user.save)
        @new_user = User.find_by_email(line[0])
        #user saved successfully
      else
        #a problem occurred
        flash[:errors] = @new_user.errors
      end
    end
  end 

Andere Tipps

Ich kam in diesem gleichen Problem gestern. Ich bin mit dem oauth Addon obwohl so die Login / E-Mail ist nicht für mich erforderlichen Felder aus, es wurde auf der Persistenz andernfalls Token nicht vorhanden ist, was ich bekam um durch Hinzufügen

user.reset_persistence_token

kurz vor dem Aufruf user.save

Ich hoffe, das hilft ein wenig. Wäre schön, eine sauberere Art und Weise zu tun, um es zu finden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top