2
この質問に似た回答がありましたが、私のコードにはより具体的なものが必要です。基本的に私はCSVファイルから行を呼び出しましたが、今は呼び出された行を削除する必要があります。私はこれをまだ書いていますが、ここで私は皆に助けを求めています。私はここにたくさんのコードがあることを知っていますが、文脈を理解することがより容易になるほど、より多くのものがあると考えました。コードにノイズが多すぎると謝罪します。Rubyを使ってCSVファイルから行を削除する
def delete_user_menu
puts "============================================"
delete_users_active_list
puts " "
puts "Please type in the name of the user you wish to eradicate: "
print "> "
eradicate(gets.chomp)
end
def eradicate(delete_input)
delete_row = delete_authentication(delete_input)
if delete_row
puts "Are you sure you want to delete #{delete_input} from the database?"
puts "[y]es or [n]o"
print "> "
delete_answer = gets.chomp
if delete_answer == "y"
delete_user
after_deletion_menu
elsif delete_answer == "n"
puts "Close call! Taking you back to main menu."
sleep 2
admin_main_menu
else
puts "Input not recognised. Please try again."
eradicate(delete_input)
end
else
puts "User not recognized. Please try again."
sleep 1
delete_user_menu
end
end
def delete_user
# this is where the delete user function needs to go
after_deletion_menu
end
def after_deletion_menu
puts " "
puts "User deleted! What would you like to do now?"
puts "1. Delete another user"
puts "2. Back to main menu"
print "> "
after_deletion_choice = gets.chomp
if after_deletion_choice == "1"
delete_user_menu
elsif after_deletion_choice == "2"
admin_main_menu
else
puts "Input not recognized. Please try again."
after_deletion_menu
end
end
def delete_users_active_list
CSV.foreach("./users.csv", headers: true) do |row|
username = row['username']
puts "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
puts "Username: #{username}"
end
end
def delete_authentication(username)
CSV.open('users.csv', headers: true).find { |row| row['username'] == username }
end
私はこの質問How to remove a row from a CSV with Ruby を見て持っていたが、私はここにいる理由を私は完全にそれゆえ、答えを理解していません。どんな助けも大歓迎です。
おかげで、私は私のコードにこれを実装しようとしましたが、それは正確に動作しませんか?私は何のエラーも出ていない、それは何も変更していないだけです。 @csvfileビットをCSVファイル名に置き換え、:fooを:usernameに置き換えました。私がやるべきことが他に何かありますか? – thomasgee
@thomasgee - あなたは実際のユーザー名で 'true'を置き換えましたか? – seph
は、csvファイルに複数のユーザーがいるためオプションではないので、(delete_input)がコードを使って選択されたユーザー名(gets.chompから)を参照していることがわかります。 – thomasgee