在我的Rails 5应用中,我正在使用Carrierwave上传图像。
我必须使用相同的上传器进行建模:
account.rb:
mount_uploader :logo, ImageUploader
image.rb:
mount_uploader :image, ImageUploader
这会将文件上传到:
“上载/#{model.class.to_s.underscore} /#{mount_as} /#{model.id}”
现在奇怪的是我可以使用:
@account.logo&.url(:thumb) // works!
@account.logo&.image_url(:thumb) // error!
但是在图像模型上(一种产品具有很多图像):
@product.images.first&.image_url(:thumb) // works!
@product.images.first&.url(:thumb) // error!
因此,在第一种情况下,我必须使用.url,在第二种情况下,我必须使用.image_url
我不知道为什么...有帮助吗?
答案 0 :(得分:1)
实例方法image_url
是根据传递给mount_uploader
的列动态定义的,并且只需在列上调用url
。定义看起来像这样...
def #{column}_url(*args)
#{column}.url(*args)
end
因此,我怀疑logo_url
是否可以在@account
上运行(尽管我尚未对此进行测试)