Как интерполировать в имени метода ruby - PullRequest
0 голосов
/ 24 мая 2019

Можно ли интерполировать в имени метода? Я пытаюсь сделать эту работу def "cancel_#{appointment.id}", но безуспешно. спасибо

Ответы [ 2 ]

8 голосов
/ 24 мая 2019

Использование define_method.

define_method "cancel_#{appointment.id}" do
  # your method body
end
0 голосов
/ 24 мая 2019

Лучше всего использовать 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'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...