2011-01-27 4 views
0

사용자가 이미지를 업로드하고 '잠긴'것으로 표시 할 수있는 Ruby on Rails (2.2.2) 응용 프로그램이 있습니다. 이렇게하면 표시하지 않는 것보다 다른 폴더에 넣을 수 있습니다. 일반적인 업로드 폴더는/uploads/Image이고 잠긴 폴더는/uploads/vip/Image입니다. 나는 누군가에게 링크를 보내지 않고 로그인하지 않고 볼 수 있도록 VIP 폴더 만 잠그고 싶습니다. 논리가 맹목적으로 이미지를 제공하는 대신 앱으로 리디렉션되어야한다고 생각합니다. 질문은 어떻게?로그인 한 사용자 만 이미지를 볼 수 있도록 허용하려면 어떻게해야합니까?

레일즈에서 모델을 만드는 것은 옵션이 아닙니다. 이러한 이미지는 fckeditor에 의해 업로드되고 추가 로직없이 작성되고 연결되기 때문입니다.

답변

0

devise을 사용하는 경우 before_filter :authenticate_user!과 같은 필터가 있어야합니다. 사용자가 로그인하지 않으면 로그인 페이지로 리디렉션됩니다. 이미지는 컨트롤러 작업을 통해 제공됩니다.

+0

필자는 authlogic을 사용하고 있지만 같은 것이 적용됩니다. 어떤 컨트롤러를 만들어야합니까? 보호 된 폴더와 같은 이름입니까? – miccet

0

어딘가에 이미지 모델을 사용하지 않고도 특정 경로를 잠그기 위해 (이 n00b까지 볼 수있는) 방법이 없으므로 앱이 어떻게 설계되었는지 다시 생각해야 할 수도 있습니다. fckeditor를 앱의 레일즈 모델과 컨트롤러와 완벽하게 통합 할 수있는 Rails fckeditor (링크) 젬이 있습니다.

내가하는 일은 다음과 같습니다.

  1. 는 DB 마이그레이션에 최소한 user_id:integerprotected:boolean, :default => false 필드에서 가진 "이미지"모델과 컨트롤러를 만듭니다. 이렇게하면 다른 사람이 아닌 특정 이미지에 직접 연결하고 이미지를 업로드 한 사람을 추적 할 수 있습니다. 이미지 모델에서 belongs_to :user 관계를 설정해야합니다.
  2. 사용자 모델을 "has_many : images"관계로 설정하여 업로드 한 사진에 사용자를 연결합니다.
  3. Authlogic 인증 사용자를 사용하고 Authlogic에서 제공 한 before_filter :current_user 메서드를 사용하여 사용자가 액세스 할 수 있도록 특정 페이지가 필요합니다.
  4. 레일스 케이 케터 젬을 종이 클립으로 구현하여 사용자가 콘텐츠를 편집하고 사진을 업로드 할 수있게하십시오. "이미지"모델에 지정된 "보호 된"필드를 기반으로 "VIP"폴더 또는 일반 폴더에 이미지를 저장하도록 PaperClip을 구성 할 수 있습니다.
  5. map.resources :images 문을 포함하도록 routes.rb 파일을 편집하면 업로드되는 각 사진에 대한 전체 URL을 만드는 데 도움이됩니다.

올바른 경로로 연결하기에 충분합니다. 이 기능을 올바로 구현하려면 사용자가 fckeditor에서 사진을 업로드 할 수있게해야하며, 보호 된 폴더를 선택하거나 지정한 폴더에 사진을 저장해야하는 "VIP"를 선택하지 않아야합니다. VIP 사진 및 그렇지 않으면 사용자 로그인/생성 및 계정이 필요합니다. 행운을 빕니다!

~ Dan