Ruby on Rails中如何通过迁移为Posts表添加ActiveStorage视频附件?
解决ActiveStorage添加视频附件的迁移错误
你犯了一个典型的新手错误:ActiveStorage 不是通过直接在数据表中添加attachment类型列来实现附件关联的,它有自己独立的存储表结构。
正确操作步骤:
- 删除你创建的错误迁移文件,这个迁移的思路完全不符合ActiveStorage的设计逻辑。
- 修改Post模型,在
app/models/post.rb中添加附件关联:- 若每个Post仅需绑定一个视频:
class Post < ApplicationRecord has_one_attached :video end - 若每个Post需绑定多个视频:
class Post < ApplicationRecord has_many_attached :videos end
- 若每个Post仅需绑定一个视频:
- 无需额外执行迁移操作,ActiveStorage会通过
active_storage_attachments和active_storage_blobs两张系统表,统一管理所有附件的关联与存储信息,你的posts表不需要新增任何列。
补充说明:
如果还未初始化过ActiveStorage,先运行以下命令完成安装:
rails active_storage:install rails db:migrate
内容的提问来源于stack exchange,提问作者user21161564
相关产品推荐
相关产品推荐

