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)
在我的应用程序中,管理员用户可以建议并编辑另一个用户的个人资料。我希望管理员用户能够为非管理员用户推荐一个(新的)头像。目前我的用户(我的应用程序中的用户 = 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)