ユーザーの入力を、テキスト ファイルに保存されているハッシュ内のすべての名前キーと比較する if/else ステートメントを作成しようとしています。これをどのように書きますか?
user_accts は配列です。
完全な if/else ステートメントの更新:
elsif choice == "2" puts "====== NEW CUSTOMER ======" puts "Choose a username:" プロンプト; login_name = gets.chomp
#file.open("cust_accts.txt", "r")
#if @user_accts.map { |acct| acct["name"]}.include?(login_name)
if @user_accts.any? {|acct| acct["name"] == login_name }
puts "Sorry, that username has already been taken"
elsif
puts "Choose a password:"
prompt; login_password = gets.chomp
user_accts << create_account(login_name, login_password)
File.open("cust_accts.txt", "a") { |file| file.puts(user_accts)}
end
元の if/else ステートメント:
if login_name == #??? @user_accts.has_key?(login_name) ???
puts "Sorry, that username has already been taken"
elsif
puts "Choose a password:"
prompt; login_password = gets.chomp
user_accts << create_account(login_name, login_password)
File.open("cust_accts.txt", "a") { |file| file.puts(user_accts)}
end
これは、次のコマンドを使用して cust_accts.txt ファイルに入力されるものとまったく同じです。
user_accts << create_account(login_name, login_password)
File.open("cust_accts.txt", "a") { |ファイル| file.puts(user_accts)}
cust_accts.txt
{"name"=>"Tom", "password"=>"popcorn", "balance"=>0}
{"name"=>"Avril", "password"=>"chain", "balance"=>0}