0

ユーザーが画像をアップロードして「ロック済み」としてマークできる Ruby on Rails (2.2.2) アプリケーションがあります。これにより、マークを付けない場合とは別のフォルダーに配置されます。通常のアップロード フォルダーは /uploads/Image で、ロックされたフォルダーは /uploads/vip/Image です。リンクを誰かに送信してログインせずに表示できないように、VIP フォルダーのみをロックしたいと思います。画像を盲目的に提供するのではなく、ロジックをアプリにリダイレクトする必要があると思います。質問はどうですか?

これらの画像は fckeditor によってアップロードされ、それ以上のロジックなしで書き込まれてリンクされるだけなので、Rails でモデルを作成することはできません。

4

2 に答える 2

0

どこかに画像モデルを持たずに特定のパスをロックダウンする方法は (この n00b が見る限り) ないため、アプリの設計方法を再考する必要があるかもしれません。アプリで fckeditor を Rails モデルおよびコントローラーと完全に統合できるようにするRails fckeditor (リンク) gem があります。

これが私がすることです。

  1. 「イメージ」モデルとコントローラーを作成し、DB 移行で最小限user_id:integerprotected:boolean, :default => falseフィールドを使用します。これにより、他の画像ではなく特定の画像への直接リンクが容易になり、誰が画像をアップロードしたかを追跡できます。belongs_to :user画像モデルでリレーションを設定してください。
  2. 「has_many :images」関係を使用してユーザー モデルをセットアップし、ユーザーをアップロードする写真に関連付けます。
  3. Authlogic を使用してユーザーを認証しbefore_filter :current_user、Authlogic が提供する方法を使用して、特定のページにユーザーがアクセスするように要求します。
  4. ユーザーがコンテンツを編集して写真をアップロードできるようにするには、 Paperclipを使用してrails-ckeditor gem を実装します。「画像」モデルで指定された「保護」フィールドに基づいて、「VIP」フォルダまたは通常のフォルダに画像を保存するように PaperClip を構成できます。
  5. routes.rb ファイルを編集して、map.resources :imagesアップロードされた各写真の完全な URL を作成するのに役立つステートメントを含めます。

それはあなたを正しい道に導くのに十分なはずです. これを正しく実装すると、ユーザーが fckeditor に写真をアップロードできるようになり、保護されているか「VIP」なしであるかを選択できます。これにより、指定したフォルダーに写真が保存され、非ファイルへの直接リンクのみが許可されます。 VIP の写真や、それ以外の場合は、ユーザーがログイン/作成してアカウントを作成する必要があります。幸運を!

〜ダン

于 2011-01-28T14:55:44.197 に答える
0

devisebefore_filter :authenticate_user!を使用している場合のように、 before フィルターを用意してください。ユーザーがログインしていない場合、これによりログイン ページにリダイレクトされます。画像はコントローラー アクションによって提供されます。

于 2011-01-27T16:14:14.103 に答える