gpt4 book ai didi

excel - Ruby on Rails。模型协会

转载 作者:行者123 更新时间:2023-12-04 20:41:38 27 4
gpt4 key购买 nike

我有一个模型,file.rb , Controller ,filecontroller.rb ,以及名为 files 的表的一组 View .这样做是为了能够上传 Excel 文件,以便我可以在索引 View 中查看某人上传 Excel 文件的时间、创建时间以及上传 Excel 文件的个人姓名的列表。

现在,我有另一个模型,bottle.rb , Controller ,bottlecontroller.rb ,以及数据库中名为 bottles 的表的一组 View .数据库中瓶子表中的列与 Excel 文件相同。

经过一些验证后,我已经能够上传 excel 文件,以便它们可以进入 files数据库中的表。我还遵循了 rails cast 教程,以便能够从瓶子索引 View 导入 excel 文件并更新我的 bottles table 。

但是,我希望能够上传 Excel 文件并在文件索引 View 中导入信息。但是导入还需要更新瓶子表中的信息。所以换句话说,从文件索引 View 导入的 Excel 需要能够更新瓶表数据库。

我知道我需要在我的 files.rb 之间建立关联。型号和 bottles.rb模型..但任何帮助都会很棒!

************更新问题************************************ *****

在我的 filecontroller.rb , 我已添加 @file.bottles = Bottle.import(params[:file_url])在保存后的创建方法中。我将 excel 文件存储在 :file_url 中.我还在我的 file.rb 中添加了一个关联。型号has_many :bottles

 def create
.........
..........
if file.save
@file.bottles = Bottle.import(params[:file_url])
end
end

在我的瓶子模型 bottle.rb我有
def self.import(file_url)
spreadsheet = Roo::Excel.new(file_url.path, packed:nil,file_warning: :ignore)
.........
bottle.save!
end

但我得到一个未定义的方法 path' for nil:NilClas error in this line电子表格 = Roo::Excel.new(file_url.path, packed: nil,file_warning: :ignore)` 它没有将 file_url 识别为 Excel 文件的路径。

最佳答案

两种方法:要么在 Controller 中执行,要么在模型中使用回调。

如果您只需要在用户从特定 View 导入时执行此操作,您可以在 Controller 中处理它。例如,如果在您的索引文件 View 中上传 excel 文件调用 files_controller.rb 中的“创建”操作,您可以执行以下操作:
if @file.save
# update bottle database using data from @file
end

但是,如果您希望每次创建新文件时都执行此操作,无论是否通过 View ,您都可以添加一个after_create回调到您的 file.rb 模型。如果您希望每次保存后都执行此操作,可以执行 after_save打回来。

关于excel - Ruby on Rails。模型协会,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31777326/

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