![](/img/trans.png)
[英]Dragonfly gem, image saving to DB but not appearing on page, “undefined method, 'dragonfly_accessor'” in Rails console
[英]Rails + Dragonfly gem: Saving image in a directory structure based on ActiveRecord object attributes
我正在使用Dragonfly gem在Rails應用程序中管理圖像和附件,並且需要根據用戶模型將圖像存儲在特定的目錄結構中。 假設我有一個有名稱的用戶模型,每個用戶有很多相冊,也有一個名稱,那么我想將圖像存儲在"#{RAILS_ROOT}/public/system/#{user.name}/#{user.album.name}/#{suffix}"
我設法在蜻蜓中更改了root_path,甚至還像這樣覆蓋了relative_storage_path:
class MyDataStore < Dragonfly::DataStorage::FileDataStore
private
def relative_storage_path(suffix)
"#{suffix}"
end
end
但是,我仍然不知道如何將ActiveRecord對象屬性(如user.name
和user.album.name
給relative_storage_path
來創建理想的路徑。
你知道我該怎么做嗎?
寶石作家Mark Evans幫了我一個忙,並在Google Group上回答了這個問題。 這是他的回答,對我的情況非常有效:
嗨,您好
您不能開箱即用地進行此操作,因為數據存儲被故意設計為非常簡單-您可以傳遞數據,還可以返回一個uid,等等。
如果要執行此操作,則必須猴子補丁#save! 像這樣:
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現在需要兩個參數。
然后,您必須修改/ monkey-patch Dragonfly :: DataStorage :: FileDataStore#store以考慮第二個arg。
出於興趣,為什么要以這種格式存儲圖像?
干杯馬克
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.