0

ポリモーフィック モデルになる写真モデルがあります。親モデルを送信して保存した場合。写真がない場合、写真の default_url を表示しようとすると、写真がないため何も表示されません。写真がモデルに添付されている場合、つまり 1 つしかない場合、フィールドが null の場合は default_url を返しますが、結果がない場合は default_url を返しません。default_url の問題を修正するためだけに null レコードを入力したくありません。

次のようにすると default_url が返されることがわかりましたが、これが最適かどうかはわかりません

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

これは機能しますが、ずさんです..と思います。誰でも良いアイデアがありますか?おそらく、写真モデルのfindメソッドか、そこに何かがあるかどうかに関係なく有効な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
4

1 に答える 1

0

私は自分の質問に答えるつもりですが、これが最良の選択肢であるとはまだ確信していません

module PhotosHelper

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

end

画像がない場合は、モデルが何かを返すようにすることをお勧めします。

于 2012-04-26T15:05:00.333 に答える