gpt4 book ai didi

ruby-on-rails - Carrierwave 和 has_many

转载 作者:行者123 更新时间:2023-12-04 06:07:12 25 4
gpt4 key购买 nike

我有这样的产品模型:

class Product < ActiveRecord::Base
has_many :images, :class_name => 'ProductImage', :order => 'position DESC', :dependent => :destroy

def image_thumb
images.first.image.thumb.url
end

def image
images.first.image.url
end
end

产品图片模型:

class ProductImage < ActiveRecord::Base
attr_accessible :image, :position, :product_id, :title

belongs_to :product

default_scope order('position ASC')

mount_uploader :image, ProductImageUploader
end

uploader 模型:

class ProductImageUploader < CarrierWave::Uploader::Base
...
def default_url
asset_path([version_name, "default.jpg"].compact.join('_'))
end
end

但是如果我不为产品上传任何图片,我将在 image_thumb 和 image 方法中得到“nil”。如果没有上传一张图片并且Product和ProductImage模型之间的关系是一对多,如何获取default_url?

最佳答案

如果您没有访问 uploader 的权限, uploader 就无法帮助您,因此您必须手动完成。您已经在使用演示者(或多或少),所以这非常简单:

def image_thumb
if images.any?
images.first.image.thumb.url
else
asset_path("default.jpg")
end
end

def image
if images.any?
images.first.image.url
else
asset_path("thumb_default.jpg")
end
end

类似的代码适用于 belongs_to 关系。

关于ruby-on-rails - Carrierwave 和 has_many,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15996966/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com