2016-10-06 7 views
0

Я использую carrierwaveuploader/carrierwave: Classier solution for file uploads for Rails, Sinatra and other Ruby web frameworks.Как проверить удаление изображения? Я не могу проверить, потому что перед сохранением инвертора. return true

@foo.assign_attributes(update_params) #=> update_params includes "remove_avatar"=>"1" 
@foo.avatar.present? #=> true 
@foo.save 
@foo.avatar.present? #=> false 

перед сохранением present? возвращения true. после сохранения present? возвращение false.

Мои Validation

validate :validate_avatar 

def validate_avatar 
    # if @foo.avatar deleted and same conditions, add error 
end 

В validate_avatar, @foo.avatar.present? является true, потому что перед сохранением.

Я стараюсь after_save :validate_avatar.

after_save :validate_avatar 

def validate_avatar 
    # if @foo.avatar deleted and same conditions, add error 
    # then return false 
end 

Поскольку after_save, @foo.avatar.present? является false. Но Rails5 не откат с возвратом false.

Как проверить @foo.avatar удален в подтверждение?

Я хочу проверить, что avatar был удален, но оставил данные об урожайности изображения. Поэтому мне нужно проверить, @foo.avater удален или нет. Если avatar удален, данные об уроне изображения удалены. Поэтому проверьте правильность.

Уже сделан способ удаления всех данных об урожайности изображения (xxx_crop) в моем проекте.

+0

Если я правильно понимаю, вы хотите, чтобы вызвать ошибку всякий раз, когда кто-то пытается удалить их аватар, но сохраняйте одни и те же параметры везде? – bkunzi01

+0

@ bkunzi01 Я добавляю цель проверки. –

ответ

0

Вы можете использовать remove_avatar?.

@foo.remove_avatar? #=> true or false.

  • аватара изображение будет удалить, если true с save
  • аватара изображение не будет удалить, если false с save
0

В контроллере вы можете сделать

if @foo.save 
    <do whatever> 
else 
    render json: @foo.errors 

так @foo будет приписать ошибки.

 Смежные вопросы

  • Нет связанных вопросов^_^