2011-01-27 82 views
0

我有一個Ruby on Rails(2.2.2)應用程序,用戶可以在其上面上傳圖像並將其標記爲「鎖定」。這會將它們放在另一個文件夾中,而不是標記它。正常的上傳文件夾是/ uploads/Image,鎖定的文件夾是/ uploads/vip/Image。我只想鎖定VIP文件夾,以便您不能將鏈接發送給某人並在不登錄的情況下查看它。我想邏輯將不得不被重定向到應用程序,而不是盲目地提供圖像。問題是如何?如何僅允許登錄用戶查看圖像

在rails中創建模型並不是一種選擇,因爲這些圖像是由fckeditor上傳的,並且不需要進一步的邏輯即可完成寫入和鏈接。

回答

0

有一個之前的過濾器,如before_filter :authenticate_user!如果您使用devise。如果用戶未登錄,則會重定向到登錄頁面。圖像通過控制器操作提供。

+0

我正在使用authlogic,但同樣的事情會適用我猜。我應該創建什麼控制器?與受保護的文件夾名稱相同? – miccet 2011-01-27 16:22:17

0

您可能不得不重新考慮您的應用程序是如何設計的,因爲沒有任何方式(只要此n00b可以看到)鎖定某些路徑而不在某處存在圖像模型。有一個Rails fckeditor(鏈接)gem,將允許您完全集成fckeditor與Rails模型和控制器在您的應用程序。

這是我會做的。

  1. 在DB遷移最低限度user_id:integerprotected:boolean, :default => false字段創建與「圖像」模型和控制器。這樣可以更輕鬆地將鏈接指向某些圖片而不是其他圖片,並跟蹤誰上傳圖片。確保在圖像模型中設置關係。
  2. 使用「has_many:images」關係設置您的用戶模型,以將用戶綁定到他們上傳的照片。
  3. 使用Authlogic認證用戶並要求某些頁面使用戶使用Authlogic提供的方法before_filter :current_user登錄訪問。
  4. 執行rails-ckeditor寶石與回形針允許用戶編輯內容和上傳照片。您可以將PaperClip配置爲基於「圖像」模型中指定的「受保護」字段將圖像保存在「VIP」文件夾或普通文件夾中。
  5. 編輯您的routes.rb文件以包含map.resources :images聲明,這將有助於爲每張上傳的照片創建完整的URL。

這應該足以讓您走上正確的道路。如果你正確地實現了這個功能,你應該有能力讓用戶上傳fckeditor中的照片,選擇是否受到保護,或者沒有「VIP」,它應該將照片保存到指定的文件夾中, VIP照片和其他要求用戶登錄/創建和帳戶。祝你好運!

〜Dan

相關問題