gpt4 book ai didi

ruby-on-rails - FasterCSV:在接受文件之前检查文件是否无效 - 有更简单的方法吗?

转载 作者:数据小太阳 更新时间:2023-10-29 08:13:44 25 4
gpt4 key购买 nike

我在 Ruby on Rails 应用程序上使用 FasterCSV,目前如果文件无效,它会抛出异常。

我查看了 FasterCSV doc , 似乎如果我使用 FasterCSV::parse使用一个 block ,它会一次读取一行文件,而不会分配太多内存。它会抛出 FasterCSV::MalformedCSV如果文件有任何类型的错误则异常。

我已经实现了一个自定义解决方案,但我不确定它是否是最好的解决方案(请参阅下面我的回答)。我有兴趣了解替代方案

最佳答案

这是我目前的解决方案。我真的很想了解改进/替代方案。

# /lib/fastercsv_is_valid.rb

class FasterCSV

def self.is_valid?(file, options = {})
begin
FasterCSV.parse(file, options) { |row| }
true
rescue FasterCSV::MalformedCSV
false
end
end

end

我使用这样的方法:

# /models/csv_importer.rb

class CsvImporter
include ActiveRecord::Validations

validates_presence_of :file
validate check_file_format

...

private

def check_file_format
errors.add :file, "Malformed CSV! Please check syntax" unless FasterCSV::is_valid? file
end
end

关于ruby-on-rails - FasterCSV:在接受文件之前检查文件是否无效 - 有更简单的方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5953255/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com