Rails + petit bijou Dragonfly: Enregistrement de l'image dans une structure de répertoire en fonction des attributs de l'objet ActiveRecord

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

Question

J'utilise libellule pierre précieuse pour gérer les images et les pièces jointes dans mon application rails et je dois de stocker des images dans une structure de répertoire spécifique en fonction de mon modèle utilisateur. laissez » dire que j'ai modèle utilisateur qui a un nom et chaque utilisateur a beaucoup albums qui ont un nom aussi, alors je veux que les images soient stockées dans "#{RAILS_ROOT}/public/system/#{user.name}/#{user.album.name}/#{suffix}"

J'ai réussi à changer la root_path dans la mouche de dragon et moi même relative_storage_path overrided comme ceci:

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

mais, je ne sais pas comment je peux passer l'objet ActiveRecord attributs comme user.name et user.album.name à relative_storage_path pour créer mon parcours idéal.

Avez-vous une idée de comment je peux faire une telle chose?

Était-ce utile?

La solution

Mark Evans l'auteur gem m'a fait une faveur et a répondu à cette question sur le groupe Google. Voici sa réponse qui a fonctionné assez bien pour mon cas:

Salut à

Vous ne pouvez pas le faire hors de la boîte, parce que le magasin de données délibérément conçu pour être très simple - vous passez dans les données, il donne vous sauvegardez un uid, etc.

Si vous voulez le faire, vous aurez à la pièce jointe singe-patch # sauver! comme donc:

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

La seule chose que j'ai changé ci-dessus est que datastore.store prend deux args maintenant.

Vous devrez alors modifier / singe-patch Dragonfly :: DataStorage :: FileDataStore # magasin pour tenir compte de la deuxième arg.

Hors intérêt, pourquoi voulez-vous que les images soient stockées dans ce format?

Vive Mark

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top