Можно ли интерполировать в имени метода? Я пытаюсь сделать эту работу def "cancel_#{appointment.id}", но безуспешно. спасибо
def "cancel_#{appointment.id}"
Использование define_method.
define_method
define_method "cancel_#{appointment.id}" do # your method body end
Лучше всего использовать define_method, но вместо этого можно использовать версию Module # class_eval , которая принимает строку в качестве аргумента:
class C end x = 'cat' C.class_eval "def #{x}; 'meow'; end" C.instance_methods.include?(:cat) #=> true C.new.cat #=> 'meow'