Carrierwave - 具有default_url问题的多态

时间:2012-04-26 00:05:24

标签: ruby-on-rails paperclip carrierwave polymorphic-associations

我有一个将成为多态模型的照片模型。如果我提交我的父模型并保存它。如果它没有任何照片,当我显示照片的default_url时,它将不会显示任何内容,因为没有照片。当照片附加到模型时,意味着只有一个,当字段为空时,它将返回default_url,但是当没有结果时,它不会返回default_url。我不想仅仅为修复default_url问题而输入空记录。

我发现如果我执行以下操作,它将返回default_url但不确定这是最好的

ImageUploader.new.default_url(:small) if @photos.blank?

这可行,但它很草率......我想。谁有更好的主意?也许是照片模型上的find方法或者更好的东西,它会返回一个对象,该对象具有Valid URL,无论是否存在某些内容。

class Photo < ActiveRecord::Base
  # Concerns
  include Guidable

  default_scope :order => 'photos.order DESC'

  belongs_to :attachable, :polymorphic => true      
  mount_uploader :image, ImageUploader

  def attachable?
    !!self.attachable
  end

end

1 个答案:

答案 0 :(得分:0)

我将回答我自己的问题,但仍然不相信这是最好的选择

module PhotosHelper

  def photo_url(photo, size)
    defined?(photo.image) ? photo.image.url(size) : ImageUploader.new.send(size).default_url
  end

end

如果没有图像,宁愿让模型返回一些东西。