gpt4 book ai didi

ruby-on-rails - 在使用带有 Roo-xls gem 的 Rails 保存之前验证上传的 Excel 文件

转载 作者:太空宇宙 更新时间:2023-11-03 16:46:44 25 4
gpt4 key购买 nike

在模型中,在上传 .xls 文件之前,我希望能够在应用程序保存 excel 文件之前对其进行验证。我正在尝试从 :file_url 对象(将保存 .xls 文件的 comits 表中的列)打开要保存的 excel 文件,然后验证它但是我得到了一个 no implicit conversion of Symbol into String 错误。

当我将已由 carrierwave 上传并保存的 excel 文件的实际文件路径放入 Roo::Excel.new("") 时,验证有效,但这违背了我的目的验证。

如何获取未存储在应用程序中的 excel 文件?

感谢您的帮助!我希望不会太困惑。

这是我的comit.rb

class Comit < ActiveRecord::Base
belongs_to :user
mount_uploader :file_url, ComitUploader, mount_on: :file_url
validates :filename, :file_url, presence: true
validates_format_of :file_url, with: /.xls/, message: "Wrong file format"
before_save :validate_excel

def validate_excel
sheet = Roo::Excel.new(:file_url)
errors = []

header = sheet.row(1)
num_of_columns = sheet.last_column

errors << 'Need headers' unless
errors << 'Need more columns' if num_of_columns < 21

errors
end
end

最佳答案

您正在将符号 :file_url 传递给 Roo::Excel.new,它需要文件的路径。尝试:

sheet = Roo::Excel.new(file_url)

关于ruby-on-rails - 在使用带有 Roo-xls gem 的 Rails 保存之前验证上传的 Excel 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31573319/

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