В моей модели User
используется несущая волна для создания изображений, к которым обращаются как @user.photo.thumb
. Это не фотомодель, photo
- string column
в User
. Однако некоторые пользователи не загрузили photo
, поэтому я хочу создать оператор if/else
, который скажет мне, загрузили ли они фотографию или нет.Как спросить, существует ли @ user.photo? созданный из (класс PhotoUploader <CarrierWave :: Uploader)
<% if @user.photo %>
возвращает true, хотя пользователь еще не загрузил фотографию.
<% if @ user.photo.nil? %> return false, однако в консоли Heroku он показывает column photo
как nil
для этого user
.
и = User.find (5)
=> Идентификатор пользователя: 5, имя: "Губка Боб", ..., фото: ноль>
class User < ActiveRecord::Base
mount_uploader :photo, PhotoUploader
end
class PhotoUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
version :thumb do
process resize_to_fill: [150,150]
end
if Rails.env.production?
storage :fog
else
storage :file
end
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
end
Это для использования как аватар. Я хочу изображение аватара по умолчанию, если они не загрузили свою собственную фотографию.
'существует?' Не работает, но '@ user.photo.file.nil?' Делает. Благодарю. –
Хмм делал это из памяти, вздох. Обновлено, чтобы быть .nil ?, вынос - это то, что фотография была заменена загрузчиком, поэтому вам нужно в нее копать, чтобы получить то, что вы ищете, поскольку это не просто простое поле/строка из БД. – Doon