如何将附件添加到迁移的表中?(Ruby on Rails)

trnvg8h3  于 2023-03-12  发布在  Ruby
关注(0)|答案(1)|浏览(99)

我有一个帖子表,我想添加一个视频附件(我正在使用ActiveStorage)。
我尝试创建以下迁移:

class AddVideoToPosts < ActiveRecord::Migration[7.0]
  def change
    add_column :posts, :video, :attachment
  end
end

但是当我运行rails db:migrate时,我得到了以下错误:

ERROR:  type "attachment" does not exist

如果这是一个简单的修复,请原谅我。我是Rails的新手。谢谢!

sqyvllje

sqyvllje1#

对于某些特定的模型附件,您不需要进行任何迁移
只需将此行添加到模型中

class Post < ApplicationRecord
  has_one_attached :video
end

class Post < ApplicationRecord
  has_many_attached :videos
end

就这样
当然,只有在设置了活动存储并具有活动存储表的情况下,它才会起作用
如果您没有这样的表-添加它们

bin/rails active_storage:install
bin/rails db:migrate

这将设置配置,并创建Active Storage使用的三个表:

  • active_storage_blobs存储有关上载文件的数据,如文件名和内容类型
  • active_storage_attachments,一个多态连接表,用于将模型连接到blob。如果模型的类名发生更改,则需要对此表运行迁移,以将基础record_type更新为模型的新类名
  • active_storage_variant_records(如果启用了变量跟踪)存储已生成的每个变量的记录

详情请参见official guide

相关问题