2016-11-24 1 views
1

私はいくつかのファイルを保存するためにアップローダー(carrierewave)を持っていますが、いくつかのファイルが同じ名前になり、問題を引き起こすことになるのは恐れています。さらに、私はフォルダの整理を維持することを望むでしょう。どのように現在のクラスが属するクラスを取得できますか?

私は、タイトルといくつかの画像を持つ雑誌を作成することができる最初の足場「雑誌」を持っています。私が使用する第2の足場「ページ」は、マルチアップロードシステムを可能にします。この方法で

、私のモデルは次のようになります。私のアップローダーで今

magazine.rb

has_many :pages, :inverse_of => :magazine, :dependent => :destroy 

pages.rb

belongs_to :magazine 

、私が持っています以下:

def store_dir 
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}" 
    end 

"uploads/page/image"のようなフォルダを作成し、その中のすべての画像をアップロードします。他のマガジンの場合でもイメージが混ざります。

私の質問は次のとおりです。代わりに雑誌のIDを書く方法がありますか?これは、クラス "ページ"が属していることを意味することを意味しますが、Googleで私の質問に答えるものは見つかりませんでした。あなたがモデルにアクセスすることができPageモデルに搭載されたカスタムアップローダーを持っている場合は

は事前

答えて

2

でいただきありがとうございます。しかしPageImageUploader.rb

def store_dir 
    "uploads/magazines/#{model.magazine.id}/#{model.id}" 
end 

、次のことができ、通常の属性モデルが永続化されていない限り、モデルIDにアクセスできません。その回避策はhereです。

+0

あなたの答えをありがとう、それは私が思ったよりもうまくいった! – Jaeger

関連する問題