В целом, foo ||= default_value
никогда не работает, если допустимое значение для foo равно false.
foo ||= default_value
является допустимым шаблоном, только когда все действительные значения интерпретируются как логическое значение ИСТИНА.
Ваше утверждение do_more == true if !defined? do_more
должно использовать оператор присваивания, я полагаю, опечатка: do_more = true if !defined? do_more
Может быть, лучше будет do_more = true unless defined? do_more
Это выглядит хорошо для меня, но вам нужно проверить, чтобы убедиться, что он работает правильно.
Если ваш параметр приходит из формы HTML, то неопределенный регистр на самом деле является строкой нулевой длины, "".Если это ваша ситуация, вам нужно:
do_more = true if do_more == ''
Я бы также предложил комментарий # set default