2012-03-17 2 views
0

우리는 avatar 업로드를 위해 carrierwave를 구현하는 사용자 모델을 가지고 있습니다.MongoMapper가없는 반송파는 업로드되지 않은 사용자에게 아무 것도 반환하지 않습니다.

사진을 업로드 한 사용자의 경우 모든 사항이 정상입니다. 그러나 그렇지 않은 경우에는 #photo 메서드를 호출 할 때 Nothing을 얻습니다. 빈 문자열이나 빈 문자열이 아니기 때문에 아무 것도 없습니다. 따라서이 때문에 색인을 생성하거나 여러 가지 작업을 수행 할 수 없습니다. 마치 돌아 오지 않는 것처럼 보입니다.

그런 생각을하는 방법에 대한 의견이 있으십니까? 내가 the documentation에 따르면 http://github.com/brandonhilkert/carrierwave-mongomapper

class User 
    mount_uploader :photo, PhotoUploader 
    ... 
end 

class PhotoUploader < CarrierWave::Uploader::Base 
    include CarrierWave::MiniMagick 
    storage :fog 

    process :resize_to_fit => [200, 200] 

    version :normal do 
    process :resize_to_fill => [100, 100] 
    end 

    version :thumb do 
    process :resize_to_fill => [50, 50] 
    end 

    def store_dir 
    "#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 
    end 

end 

irb(main):024:0> User.brandon.photo 
=> 
irb(main):025:0> User.brandon.photo.class 
=> PhotoUploader 
irb(main):026:0> User.chris.photo 
=> https://[redacted]/IMG_1160_2_bigger.jpg 
irb(main):027:0> User.chris.photo.class 
=> PhotoUploader 
+0

아무 것도 얻을 수 없습니다. '''User.brandon.photo.class'''를 시도하여 실제로 반환 된 것을 찾으십시오. – Veraticus

+0

위의 내용은 다음과 같습니다 : irb (main) : 025 : 0> User.brandon.photo.class => PhotoUploader – user577808

+0

PhotoUploader 클래스에서 to_s가 아무것도 생성하지 않는 것과 같습니다 ... – user577808

답변

0

을 사용하고

, 당신은 blank? 사용할 수 있습니다

User.brandon.photo.blank? # should be true 
User.chris.photo.blank? # should be false 
+0

나는 그것은 유효하지만, 내가 원하는 것은 아닙니다. – user577808

0

그냥 공급자에 기본 아바타 당신의 업 로더에 DEFAULT_URL을 구현

def default_url 
    "/assets/avatars/{version_name}_default.png" 
end 

다음과 같이 이미지를 표시하십시오.

image_tag User.brandon.photo_url(:normal) 
+0

awesome_print와 같은 도구를 사용하면 문제가 발생합니다. ap User.brandon, 모든 속성을 반복하고 #photo가 그 중 하나입니다. 나는 코드에서 photo_url을 사용하여 사진을 표시하는 방법을 안다. 마찬가지로, elasticsearch가 인덱스로 이동하면 사용자의 .photo 속성을 인덱싱하여 휴식합니다. 실제로 photo_url을 찾지 않습니다. – user577808

관련 문제