Как сказал @Pavan в комментарии, ваше условие может быть неверным.Это должно быть ==
вместо =
.=
- это назначение.
if @weight.nominal + x == required ... end
Вот что происходит "за сценой" с вашим исходным кодом:
required
назначается x
. - Добавьте x к
@weight.nominal
(@weight.nominal + x
) - Оцените результат шага 2, который всегда верен.
- Выполните код в блоке
if
, которыйweights << @weight.id
В конечном итоге ваше значение x
будет потеряно, вместо него будет взято значение required
, а ваше условие бесполезно, поскольку оно всегда истинно.