30

ポストモデルとポッドキャストモデルがあります。どちらのモデルにも、imageというタイトルの属性があります。両方のモデルを処理するために、1つのCarrierwaveアップローダー(ImageUploaderという名前)を使用しています。制作に入る前に2つの質問があります。

ばかげた質問

添付ファイルの属性名が同じである場合、2つの異なるモデルに同じアップローダーを使用しても大丈夫ですか? 明らかだと思われる場合は申し訳ありません

主な質問

各ブログ投稿画像の3つのバージョン(親指、大、セピア)と、各ポッドキャスト画像の1つのバージョン(親指)のみを作成したいと思います。

今すぐ2つのアップローダーを使用する必要がありますか、それともすでに使用しているもので名前空間を作成できますか?

繰り返しますが、それはおそらく明白に思えます。これらの質問をするのにかかった時間内に、おそらく2番目のアップローダーを作成できたはずです。

4

1 に答える 1

44

属性名が異なっていても、異なるモデルで同じアップローダーを使用できます。例えば

class Post
  mount_uploader :image, ImageUploader
end

class Podcast
  mount_uploader :photo, ImageUploader
end

あなたがしたいかどうかは別の問題です。あなたの場合、要件が異なるため、モデルごとに異なるアップローダーを作成します。コードをドライに保ちたい場合は、いつでもサブクラスを使用できます。

class ImageUploader < Carrierwave::Uploader::Base; end  # thumbnail
class PostImageUploader < ImageUploader; end  # thumbnail (from superclass), large & sepia
class PodcastImageUploader < ImageUploader; end # thumbnail (from superclass)
于 2011-03-07T09:22:46.407 に答える