CSV 如何根据用户选择删除行

CSV How to delete row depending of user choice

你好我有一个程序,用户可以在其中写八卦,有作者和内容。我将其保存在 CSV 文件中。像这样:

author1,content1
author2,content2
author3,content3

我想用简单的 gets.to_i 询问用户他想删除哪一行。然后如果用户输入 2 将删除第二行。如果他进入 3 第三等... 如何根据用户选择删除 i 行?

你可以使用CSV::Table#delete

i = gets.to_i
table = CSV.table(file).by_row

table.delete(i)

我发现这个可以帮助别人:

def self.delete(index_to_delete)
    gossips = Gossip.all # Creation tempory array
    gossips.delete_at(index_to_delete - 1) # delete the choosen row
    File.open("db/gossip.csv", "w") do |f|
        f << ""         # clean csv file
    end
    gossips.map { |g| g.save } # save the new array as csv (with an other def to save)
end

我确定这不是最好的方法,但确实有效!