Старый вопрос, но я подумал, что я хотел бы добавить свои мысли для людей, которые приходят из Google:
Отдельные методы хороши в некоторых случаях, но лучший вариант, на мой взгляд, следующий:
def method(option = {:flag => false})
options[:flag] ? doFoo : doBar
end
method(:flag => true)
Это также может включать проверку, действительно ли флаг является логическим:
def method(option = {:flag => false})
flag = options.fetch(:flag) { false }
unless [true, false].include?(flag)
raise ArgumentError, ':flag option should be true or false'
end
flag? doFoo : doBar
end
method(:flag => true)