通过 Rails 中的路径将文件添加到数据库

Posted

技术标签:

【中文标题】通过 Rails 中的路径将文件添加到数据库【英文标题】:Add a file to a database by its path in Rails 【发布时间】:2021-07-07 15:16:29 【问题描述】:

我有一个子例程,它生成一个 .mp4 文件,然后使用该文件的唯一标识符调用一个 ruby​​ 脚本。 该文件类似于文件系统:

/opt/program/records/123345_record.mp4

文件名中的数字代表唯一的修饰符,ruby 脚本知道。现在我想将这个生成的文件存储在数据库中。我已经准备好带有相应迁移文件的架构文件,因此该表有一个额外的文件列。

ActiveRecord::Schema.define(version: 2021_04_12_123013) do

  create_table "articles", force: :cascade do |t|
    t.string "title"
    t.text "description"
    t.datetime "created_at", precision: 6, null: false
    t.datetime "updated_at", precision: 6, null: false
    t.binary "file", limit: 104857600
  end

end

但是如何将文件存储在模型/迁移文件中定义的行中? 在articles_controller.rb 我可以定义一个方法,可以这样调用:

def add_file

end

这还不够,但我不知道如何用当前存储在文件系统上的数据填充新字段“文件”。

【问题讨论】:

【参考方案1】:

您可以编写一个rake 脚本并从终端运行它。

https://www.rubyguides.com/2019/02/ruby-rake/

【讨论】:

为什么我需要一个任务运行器来解决这个问题?没有正确的方法将文件添加到标准 ruby​​ 中的 myarticle.add_file("path/to/file") 之类的对象吗? 你想在创建后在数据库中填充一个新字段,这就像迁移后的回调,你可以在迁移时这样做,但这是一个不好的方法。或者我错误地理解了你的问题。您是否有模型并添加了新字段,这是一种方法,从 rake 或 rails 控制台运行脚本。如果您创建一个新模型并希望在创建模型实例后在 mp4 文件上添加路径,您可以通过 after_create 模型回调来完成。 after_create :add_file def add_file update(file: 'path/to/file.mp4') end

以上是关于通过 Rails 中的路径将文件添加到数据库的主要内容,如果未能解决你的问题,请参考以下文章

Rails 6将输入添加到页面中的列表

Rails 动态 javascript 加载

如何将记录添加到has_many:通过rails中的关联

通过 Rails 将 SQL 文件或 Excel 文件中的数据导入数据库 [关闭]

如何通过 webpacker 将 jstree 添加到 Rails

如何将确认 addeventlistener 添加到 rails 中的不同视图页面