More generally, foo ||= default_value
never works if a valid value for foo is false.
foo ||= default_value
is only a valid pattern when all valid values are interpreted as boolean TRUE.
Your statement of do_more == true if !defined? do_more
should use the assignment operator, I presume a typo: do_more = true if !defined? do_more
Maybe better would be do_more = true unless defined? do_more
That looks ok to me, but you need to test to ensure that it works correctly.
If your param is coming in from an HTML form, then the undefined case is actually a zero length string, "". If that is your situation, then you'd want:
do_more = true if do_more == ''
I'd also suggest a comment # set default