如何插入红宝石方法名称

时间:2019-05-24 09:33:27

标签: ruby-on-rails ruby

是否可以插值方法名称? 我正在尝试def "cancel_#{appointment.id}"进行这项工作,但是没有运气。谢谢

2 个答案:

答案 0 :(得分:8)

使用define_method

define_method "cancel_#{appointment.id}" do
  # your method body
end

答案 1 :(得分:0)

最好使用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'