2013-05-11 25 views
0

我正在構建一個用戶上傳圖像的rails應用程序,然後發送到rmagick進行修改,然後進行渲染。由於用戶只能處理一個圖像,因此我最初認爲可以將其存儲在內存中而不是數據庫中,但這似乎不可行。模型名稱是AppImage,因此我想在顯示AppImage.last之前刪除所有之前的AppImage,但是我想知道是否會導致多個用戶出現問題。Rails-RMagick處理單個圖像

讓每個用戶根據IP獲取用戶配置文件併爲每個用戶配置一個AppImage是最佳解決方案嗎?我應該考慮會話哈希?

編輯:我目前使用回形針,但只是不知道如何構造程序。

+1

你爲什麼不使用回形針(https://github.com/thoughtbot/paperclip),carrierwave (https://github.com/jnicklas/carrierwave)或蜻蜓(https://github.com/markevans/dragonfly)上傳圖片?這很容易,你不能自己編寫代碼.. – Mattherick 2013-05-11 12:40:12

+0

對不起,我目前使用回形針,但我將圖像保存到數據庫,我只是不知道如何管理數據庫時,我只需要每個用戶/會話一個圖像。 – mlstudent 2013-05-11 14:33:35

+0

你也應該更新你的問題名稱 - Rails-RMagick處理單個圖像 - >也許Rails-Paperclip而不是Rails-RMagick會更好.. – Mattherick 2013-05-13 05:26:20

回答

0

如果用戶上傳圖片,您可以將會話變量設置爲true,並檢查上傳控制器是否設置了會話變量。取決於您允許用戶上傳圖片,還是不允許。您可以將會話存儲設置爲db,進一步您可以定義一個範圍會話保存的時間。

控制器:

def new 
    @upload = YourUploadModel.new 
    session[:image_uploaded] ||= true 
end 

def create 
    if session[:image_uploaded] && session[:image_uploaded] == true 
    redirect_to root_path, :notice => "Already uploaded an image today!" 
    else 
    # create your upload.. 
    end 
end 

應用程序/配置/初始化/ session_store.rb:

# Use the database for sessions instead of the cookie-based default, 
# which shouldn't be used to store highly confidential information 
# (create the session table with "rails generate session_migration") 
YourAppname::Application.config.session_store :active_record_store, { 
    expire_after: 1.days 
}