Задать вопрос
zoonman
@zoonman
⋆⋆⋆⋆⋆

Чем заменить тернарный оператор?

Есть говнокод вида:
margin = @supply.supplier.margin ? @supply.supplier.margin : 0

Если есть какой-то общий подход, например проверить наличие поставщика, наценки и вернуть 0 в случае их отсутствия, подскажите. Затупляю в общем.
  • Вопрос задан
  • 2631 просмотр
Подписаться 3 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Code Basics
    Ruby для начинающих
    1 месяц
    Далее
  • Хекслет
    Разработчик на Ruby on Rails
    5 месяцев
    Далее
  • Skillbox
    Ruby on Rails с нуля
    10 месяцев
    Далее
Решения вопроса 2
viktorvsk
@viktorvsk
@supply.supplier.margin || 0
Даст не то, что вы хотите, когда margin будет равняться "" (что будет, если меняете через форму на пустое значение)

Для этого в Rails сделали метод
presence
margin = @supply.supplier.margin.presence || 0

Что эквивалентно:
margin = @supply.supplier.margin.present? ? @supply.supplier.margin : 0


present? лучше проверяет пустые значения, чем неявное приведение типов
Ответ написан
anyd3v
@anyd3v
margin = @supply.supplier.margin || 0
как то так
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы