Rails 6 活动存储:无法找到或构建 blob:预期可附加...((重新)设置附件时出现问题)

Rails 6 Active Storage: Could not find or build blob: expected attachable... (issue when (re)setting attachment)

在我的应用程序中,管理员用户可以建议并编辑另一个用户的个人资料。我希望管理员用户能够为非管理员用户推荐一个(新的)头像。目前我的用户(我的应用程序中的用户 = spkr)模型有:

has_one_attached :image
has_one_attached :edited_image

其中image为用户选择的头像,edited_image为admin用户推荐的头像。

使用管理员 'update' 表单时,edited_image 设置为

if spkr_params[:edited_image].present?
  @spkr.edited_image = spkr_params[:edited_image]
end

这成功地将附件设置为 edited_image

当管理员用户提交编辑时,非管理员用户会收到一封确认电子邮件。单击时,我希望非管理员用户的 image 更新。

...
if @spkr.edited_image.present?
   @spkr.image.purge
   @spkr.image = @spkr.edited_image
end
@spkr.save!

但是我收到了以下在 @spkr.save! 上引发的错误:

Could not find or build blob: expected attachable, got #<ActiveStorage::Attached::One:0x00007fdcc44fa440 @name="edited_image", @record=#<Spkr id: 154... >>

哪个是 @spkr 中的 edited_image:

@spkr.edited_image
=> #<ActiveStorage::Attached::One:0x00007fdcc44fa440 @name="edited_image", @record=#<Spkr id: 154...>>

我的感觉是@spkr.edited_image不是@spkr.edited_image的'attachable part',但我不确定如何解决这个问题。

感谢您的帮助。

我通过替换行

解决了这个问题
@spkr.image = @spkr.edited_image

@spkr.image = @spkr.edited_image.blob

这也有效:

@spkr.image.attach(@spkr.edited_image.blob)