【发布时间】:2018-06-15 17:07:12
【问题描述】:
目标是将附件下载到 tempdir 以供后续使用。 The documentation 说要使用 ActiveStorage::Blob#open 这似乎很简单。
我遇到了错误,所以请解释我做错了什么:
- 调用
@flower.photo.open会导致NoMethodError (private method 'open' called for #<ActiveStorage::Attached::One:0x00007f9780625100>) - 调用@flower.photo.blob.open` 得到
NoMethodError (private method 'open' called for #<ActiveStorage::Blob:0x00007f9780615c50>)
正在检查 the source code 我不确定为什么会收到私有方法错误。
【问题讨论】:
-
"private method 'open'" 错误通常意味着您不小心拿起了
Kernel#open,但ActiveStorage::Blob不应该发生这种情况。@flower.photo是如何定义的? -
它是如何定义的?好吧,@flower.photo 使用标准 ActiveStorage 方法成功附加。我知道这是因为
@flower.photo.attached?返回true并且我可以成功地在视图中显示照片。 -
但是在
Flower模型中它是什么样子的呢? -
它看起来应该在模型中:
has_one_attached :photo虽然我在下面发布了答案。我没有做错任何事……除了不使用边缘导轨。 ;-)
标签: ruby-on-rails rails-activestorage