我正在使用 蜻蜓宝石 要在我的Rails应用程序中管理图像和附件,我需要根据用户模型将图像存储在特定目录结构中。说我有一个具有名称的用户模型,每个用户都有许多专辑,也有一个名称,然后我希望将图像存储在 "#{RAILS_ROOT}/public/system/#{user.name}/#{user.album.name}/#{suffix}"

我已经设法改变了龙蝇中的root_path,甚至覆盖了相对_storage_path这样的词:

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

但是,我仍然不知道如何通过像ActivereCord对象属性 user.nameuser.album.namerelative_storage_path创建我的理想道路。

您是否知道我该怎么做?

有帮助吗?

解决方案

马克·埃文斯(Mark Evans)的宝石作者帮了我一个忙,并在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

我上面唯一更改的是数据存储。Store现在需要两个ARG。

然后,您将不得不修改/猴子斑点蜻蜓:: dataStorage :: fileedatastore#store要考虑第二个arg。

出于兴趣,为什么要以这种格式存储这些图像?

欢呼马克

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top