在Ruby/Rails中动态定义方法 - 如何设置params?

min*_*eow 1 ruby ruby-on-rails dynamic-method instance-methods

我试图定义一组函数,我可以传入给定的参数.

例如,我该怎么做?

>> get_1_type("xxx")

V4_RELATIONSHIP_TYPES=[1=>2,3=>4]

V4_RELATIONSHIP_TYPES.keys.each do |key|
 self.class.send(:define_method, "get_#{key}_type".downcase) do
  return GuidInfo.get_or_new(PARAMS, V4_RELATIONSHIP_TYPES[key])
 end
end

# i can call -> get_1_type("xxx") , and get the function called
Run Code Online (Sandbox Code Playgroud)

Har*_*tty 7

试试这个:

V4_RELATIONSHIP_TYPES.keys.each do |key|
 self.class.send(:define_method, "get_#{key}_type".downcase) do |param|
  # use param
  return GuidInfo.get_or_new(PARAMS, V4_RELATIONSHIP_TYPES[key])
 end
end
Run Code Online (Sandbox Code Playgroud)

现在,您可以使用参数调用该方法:

get_1_type("xxx")
Run Code Online (Sandbox Code Playgroud)

编辑1

关于Ruby块的一些链接:

从这个开始

链接1

链接2