Поскольку []
является истинным значением в Ruby, поэтому вторая часть вашего выражения никогда не выполняется, она всегда оценивается как []
.В Ruby просто false
и nil
не соответствуют действительности.
О, в любом случае, вам это не нужно.map
возвращает пустой массив, если массив пуст.
Model.new(
name: abc.name,
description: abc.description,
product_ids: abc.product_ids.map(&:id)
)