Как вернуть ноль, если в скрепке нет изображения? - PullRequest
0 голосов
/ 29 января 2019

У меня есть одна модель, которая

class Retailer < ActiveRecord::Base
  ...
    has_attached_file :onboarding_image
  ...
end

Если onboarding_image отсутствует, при выполнении retailer.onboarding_image_url я получаю: "/onboarding_images/original/missing.png"

Есть ли конфигурация для получения nil, когда изображение отсутствует?я знаю, что могу сделать что-то вроде

retailer.onboarding_image.present? ? retailer.onboarding_image : nil, но я не хочу следовать этому подходу, потому что у меня есть тысячи присоединенных_файлов во всем моем коде.

Ответы [ 2 ]

0 голосов
/ 29 января 2019

если у вас есть эти прикрепленные файлы на нескольких моделях, вы можете создать проблему для всех классов, которые имеют has_attached_file:

module BoardUrl
  def board_url
    onboarding_image.present? ? onboarding_image.url : nil
  end
end
class Retailer
  include BoardUrl
end

Таким образом, вы можете использовать свой метод board_url на любоммодель вам нужна.

0 голосов
/ 29 января 2019

Вы можете установить default_url как указано здесь :

 has_attached_file :onboarding_image, default_url: ''

Другой подход заключается в переопределении метода onboarding_image_url:

  def onboarding_image_url(default_value=nil)
    onboarding_image.present? ? onboarding_image.url : default_value
  end
...