Rails + Dragonfly Gem:ActiverCordオブジェクト属性に基づいてディレクトリ構造で画像を保存する

StackOverflow https://stackoverflow.com/questions/2705020

質問

私は使用しています ドラゴンフライジェム Railsアプリで画像と添付ファイルを管理するには、ユーザーモデルに基づいて特定のディレクトリ構造に画像を保存する必要があります。名前が付いているユーザーモデルがあり、各ユーザーには多くのアルバムがあるとしましょう。 "#{RAILS_ROOT}/public/system/#{user.name}/#{user.album.name}/#{suffix}"

ドラゴンフライのroot_pathを変更することができました。

class MyDataStore < Dragonfly::DataStorage::FileDataStore
  private
   def relative_storage_path(suffix)
    "#{suffix}"
   end
end

しかし、それでも、ActiverCordオブジェクト属性をどのように渡すことができるかわかりません user.nameuser.album.namerelative_storage_path私の理想的な道を作るために。

私がそのようなことをする方法は何か考えがありますか?

役に立ちましたか?

解決

GEMの著者であるマーク・エヴァンスは私に好意を与え、Google Groupでこの質問に答えました。これが私のケースのためにかなりうまくいった彼の答えです:

やあ

データストアは非常にシンプルになるように意図的に設計されているため、これを箱から出してはできません。データを渡すと、UIDなどが戻ってきます。

あなたがそれをしたいなら、あなたはモンキー・パッチの添付ファイル#を保存する必要があります!そのようです:

class Dragonfly::ActiveRecordExtensions::Attachment
  def save!
    destroy! if uid_changed?
    self.uid = app.datastore.store(temp_object, parent_model) if has_data_to_store?
  end
end

私が上で変更した唯一のことは、DataStore.storeが2つのargsを取得したことです。

その後、2番目のargを考慮に入れるには、DataStorage :: filedatastore :: dataStorage :: dataStorage :: dataStorageを変更する必要があります。

興味深いことに、なぜ画像をその形式で保存したいのですか?

乾杯マーク

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top