سؤال

وأنا جديدة تماما لروبي على القضبان لذا يرجى أن تتحملوني:)

وأنا تجهيز ملف بتنسيق csv المستوردة في القضبان وأريد أن إنشاء مستخدمين جدد برمجيا (أنا باستخدام AuthLogic جوهرة جنبا إلى جنب مع متطلبات دور)، وحتى الآن أنا باستخدام:

مثال لاين:

<اقتباس فقرة>
Steve.Jobs@apple.com, Steve, Jobs, 555-APPLE

والرمز:

  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

والمشكلة هي أن هذا لا إضافة مستخدم جديد، فإنه يحاول ولكن فشل (DB بيغن تليها الاستعادة)، وأفترض أنني لست ملء جميع الحقول، مثل تسجيل الدخول وكلمة السر الخ

هل يجب أن تولد صراحة قيم هذه الحقول؟

هل كانت مفيدة؟

المحلول 2

وطيب حتى لقد تمكنت من الإجابة على سؤالي الخاصة، وإن لم يكن في الأكثر مثالية من الطرق:

 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 

نصائح أخرى

وجئت عبر نفس هذه المشكلة أمس. أنا باستخدام الملحق أوث على الرغم من الحقول حتى الدخول / البريد الإلكتروني ليست مطلوبة بالنسبة لي، انها فشلت في استمرار رمز لعدم الحضور التي حصلت حول بإضافة

user.reset_persistence_token

وفقط قبل استدعاء user.save

وعلى أمل أن يساعد قليلا. سيكون من الرائع أن نجد طريقة أنظف للقيام بذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top