2013-03-14 19 views
0

我是一個初學者,有一些基本的課程。Ruby 1.9.3如果已經在數據庫中創建新用戶/密碼並重新提示?

試圖創建一個新用戶,如果該用戶已經在哈希中,再次提示用戶,但是一旦用戶爲零,請求輸入密碼,然後添加到哈希中。我做了很多嘗試。這只是其中之一。

users = { 
    user_1: 2 
} 


puts "Create New User: Type your username" 
new_user = gets.chomp 

if users[new_user.to_sym].nil? 
    puts "Type in a Password" 
    pass = gets.chomp 
    users[new_user.to_sym] = pass.to_i 

elsif users[new_user.to_sym] != nil 
    puts "We already have that user." 
    loop do 
    if users[new_user.to_sym] != nil 
     puts "Try Again" 
     ta = gets.chomp 
    break if users[ta.to_sym] == nil 
    end 
    end 
end 

我一直在使用"when, then", "if/else""until""while"等(這些都是我知道的基本功能,或至少正在學習,並想利用這些如果可能的一些變化來解決),但每次嘗試我似乎無法弄清楚如何應用停止循環的用戶名(通過最終爲零),回到我的主要目標中,向散列添加新的用戶/密碼。

+0

你需要創建只有一個用戶?還是很多? – 2013-03-14 18:12:32

+0

我需要許多設施,雖然只有一個。 – jmitchell1009 2013-03-14 18:59:48

回答

1

我認爲,您的主要努力是如何在設法從用戶​​獲取有效名稱後返回設置密碼。你可以將這些代碼提取到一個方法中,然後調用它。

users = { 
    "user_1" => 2 
} 


def get_username 
    puts "Create New User: Type your username" 
    new_user = gets.chomp 
end 

def get_password users, name 
    puts "Type in a Password" 
    pass = gets.chomp 
    users[name] = pass.to_i 
end 

new_user = get_username 

if users[new_user].nil? 
    get_password users, new_user 
else 
    puts "We already have that user." 

    # ruby's do-while loop. Or, rather, do-while-not in this case :) 
    begin 
    new_user = get_username 
    end unless users[new_user].nil? 

    get_password users, new_user 
end 

我還更改了使用字符串作爲鍵(而不是符號)的代碼。你應該避免使用那樣的符號。它有嚴重的後果(符號不是垃圾收集的,所以如果你創建的符號太多,你可能會泄漏內存)。

+0

謝謝你。 – jmitchell1009 2013-03-14 19:11:23

0

創建單個用戶:

users = { 
     user_1: 2 
} 


check=true 
puts "Create New User: Type your username" 
new_user = gets.chomp 

while(check) do 
    if users[new_user.to_sym] != nil 
    puts "We already have that user." 
    if users[new_user.to_sym] != nil 
     puts "Try Again" 
     puts "Enter username" 
     new_user = gets.chomp 
    end 
    elsif users[new_user.to_sym].nil? 
    puts "Type in a Password" 
    pass = gets.chomp 
    users[new_user.to_sym] = pass.to_i 
    break 
    end 

end 
+0

謝謝你。 – jmitchell1009 2013-03-14 19:11:00

相關問題