模型使用图像的远程 url 播种,这意味着它不是在 Rails 中创建的 db 条目。然后第一次从 Rails 中的数据库中获取它,我想检测图像尚未上传,为图像 url 分配 remote_seed_url 并保存!触发 CarrierWave 上传。显然,我只想这样做一次,但下面的代码有时会多次上传同一张图片。
class Item
include Mongoid::Document
include Sunspot::Mongoid2
field :image, type: String
field :remote_seed_url, type: String #URL for image
mount_uploader :image, ImageUploader
end
然后在控制器中
def show
@ item = Item.find(params[:id])
# if CarrierWave has already uploded then do nothing
if !@item.image?
@item.image = @item.remote_seed_url # next save will trigger the upload?
@item.save!
end
respond_to do ...
end
@item.image 的值通常是“ new ”或“ old ”和@item.image?当我看到它已经上传了图像时,有时会返回 false。这会导致上述代码多次上传。
- 控制器代码是否正确以仅上传一次图像?
- 有什么方法我可能把事情搞砸并导致@item.image?当它应该为真时返回假?也许图像老化?