Ruby on rails 如何将has_one_附加到has_many_附加到具有has_one附件的现有表?
我有一个消息模型Ruby on rails 如何将has_one_附加到has_many_附加到具有has_one附件的现有表?,ruby-on-rails,activerecord,rails-migrations,rails-activestorage,Ruby On Rails,Activerecord,Rails Migrations,Rails Activestorage,我有一个消息模型 class Message < ApplicationRecord has_one_attached :attachment 类消息
class Message < ApplicationRecord
has_one_attached :attachment
类消息
但现在我需要将其转换为:
class Message < ApplicationRecord
has_many_attached :attachments
类消息
为邮件启用多个附件的步骤
因此,我更改了模型消息中的has_one_附件has_many_附件
但当我运行message.attachments.attached?
时,它会将false返回到现有附件。
它适用于新附加的文件
我应该添加迁移还是手动添加的一次性rake Tak
正确的方法是什么?之所以
message.attachments.attached?
返回false,是因为您将属性名称从attachment
更改为attachments
。ActiveStorage将该属性名称保存在DB中,因此如果该名称在代码中发生更改,它将无法再找到旧的附件
因此,要么不更改属性名称(最简单的解决方案),要么像这样创建
ActiveStorage::Attachment.where(name: "attachment")
.where(record_type: "Message")
.update(name: "attachments")