Jos*_*ers 3 activerecord ruby-on-rails attachment rails-activestorage
在我的应用程序中,管理员用户可以建议和编辑其他用户的个人资料。我希望管理员用户能够为非管理员用户建议一个(新的)头像。目前我的用户(用户=spkr在我的应用程序中)模型具有:
has_one_attached :image
has_one_attached :edited_image
Run Code Online (Sandbox Code Playgroud)
哪里image是用户选择的头像图片,哪里edited_image是管理员用户建议的头像图片。
当使用管理“更新”表单时,edited_image设置
if spkr_params[:edited_image].present?
@spkr.edited_image = spkr_params[:edited_image]
end
Run Code Online (Sandbox Code Playgroud)
这成功地将附件设置为edited_image.
当管理员用户提交编辑时,非管理员用户会收到一封确认电子邮件。单击时,我希望image非管理员用户的 进行更新。
...
if @spkr.edited_image.present?
@spkr.image.purge
@spkr.image = @spkr.edited_image
end
@spkr.save!
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误@spkr.save!:
Could not find or build blob: expected attachable, got #<ActiveStorage::Attached::One:0x00007fdcc44fa440 @name="edited_image", @record=#<Spkr id: 154... >>
Run Code Online (Sandbox Code Playgroud)
这是edited_image来自@spkr:
@spkr.edited_image
=> #<ActiveStorage::Attached::One:0x00007fdcc44fa440 @name="edited_image", @record=#<Spkr id: 154...>>
Run Code Online (Sandbox Code Playgroud)
我的感觉是 @spkr.edited_image 不是 @spkr.edited_image 的“可附加部分”,但我不确定如何解决这个问题。
感谢您的任何帮助。
我通过更换线路解决了这个问题
@spkr.image = @spkr.edited_image
Run Code Online (Sandbox Code Playgroud)
和
@spkr.image = @spkr.edited_image.blob
Run Code Online (Sandbox Code Playgroud)
这也有效:
@spkr.image.attach(@spkr.edited_image.blob)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3420 次 |
| 最近记录: |