Frage

Ich bin mit Libelle gem Bilder und Anhänge in meiner Rails-Anwendung zu verwalten, und ich muß speichern von Bildern in einer bestimmten Verzeichnisstruktur basiert auf meiner Benutzermodell. lassen Sie uns sagen, dass ich Benutzermodell haben, die einen Namen hat und jeder Benutzer hat viele Alben, die einen Namen auch haben, dann möchte ich die Bilder gespeichert werden in "#{RAILS_ROOT}/public/system/#{user.name}/#{user.album.name}/#{suffix}"

Ich habe geändert den root_path in Drachen fliegen geschafft und ich selbst overrided relative_storage_path wie folgt aus:

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

aber immer noch, ich weiß nicht, wie ich das Active Objekt passieren kann Attribute wie user.name und user.album.name zu relative_storage_path meinen idealen Weg zu schaffen.

Sie haben keine Ahnung, wie ich so etwas tun kann?

War es hilfreich?

Lösung

Mark Evans der Edelstein Autor hat mir einen Gefallen und beantwortet diese Frage auf Google-Gruppe. Hier ist seine Antwort, die ziemlich gut für meinen Fall gearbeitet:

Hallo zusammen

Sie können diese aus der Box nicht, weil der Datenspeicher ist gezielt entwickelt, um sehr einfach zu sein - Sie in Daten übergeben, gibt es Sie sichern eine uid, etc.

Wenn Sie es möchten Sie Affe-Patch-Anlage # haben sparen! mögen so:

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

Das einzige, was ich oben geändert habe ist, dass datastore.store zwei Takes args jetzt.

Sie werden dann ändern müssen / Affe-Patch Libelle :: Datastorage :: FileDataStor # store Rechnung zu tragen, in denen Zweites Argument.

Aus Interesse, warum wollen Sie die Bilder in gespeichert werden, dass Format?

Prost Mark

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top