通过 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 将 SQL 文件或 Excel 文件中的数据导入数据库 [关闭]