2009-06-20 7 views
0

나는 attachment_fu 및 Amazon S3 스토리지를 사용하여 Rails 앱을 개발 중입니다. 객체 생성시 사용자 입력을 기반으로 : s3_ 액세스 (has_attachment 옵션의 일부)를 조건부로 만들 수 있습니까? 첨부 파일이 인증 된 것인지 아니면 공개 읽기인지 선택할 수 있도록하고 싶습니다. 이것이 가능하며 어떻게 조건문을 설정 하시겠습니까?모델에서 레일리 사용자 조건문

내 모델은 다음과 같습니다

has_attachment :content_type => :image, 
       :storage => :s3, 
       :size => 0.kilobytes..6144.kilobytes, 
       :processor => 'Rmagick', 
       :resize_to => '650x500>', 
       :thumbnails => { :thumb => '75x75!' }, 
       :s3_access => ([[conditional]] ? 'authenticated-read' : 'public-read') 

물론 [[조건] 내가 대체 할 찾고 있어요 것입니다,하지만 난 항목에 대한 조건부 사용자를 기반으로하는 방법을 제대로 설정을 모르는 모델의 액션. 아마도 이것은이 유형 명령문의 조건부 시간입니다. 어떤 제안?

답변

0

제임스, 전에 해 봤습니다. 나는 여기에 보여줄 수있는 샘플을 찾으려고 노력하면서 오래된 코드를 파고 있었지만 찾을 수없는 것 같습니다. 예전 클라이언트, 코드가 아마도 사라진 것 같습니다 ...

당신은 올바른 길을 가고 있습니다. 'has_attachment'는 매개 변수에 대한 해시가있는 메소드 호출 일 뿐이므로이를 처리하면 궁극적으로 메소드에 전송할 해시 값을 조정할 수 있습니다.

편집 - 다음 코드 샘플입니다 - 위의 예에서

production = ENV['RAILS_ENV'] == 'production' 

has_attachment :content_type => :image, 
    :max_size => 1.megabyte, 
    :resize_to => '800x600>', 
    :thumbnails => { :thumb => '146x146>', :small => '75x75' }, 

    # skip s3 for local development and testing 
    :storage => (production ? :s3 : :file_system), 
    :path_prefix => (production ? 'comment_images' : 'public/comment_images') 

, 내가 개발하는 동안 로컬에 업로드를 저장하지만, 때 생산 S3로 전환하고 싶었다. 그래서 당신은 당신이 필요로하는 곳에 아주 가깝습니다 ...