ruby-on-railsrubyinstance-methodsdynamic-method

Defining methods on the fly in Ruby / Rails - how to set params?


I am trying to define a set of functions where I can pass in given params.

for example, how do i do the following?

>> 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

Solution

  • Try this:

    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
    

    Now you can invoke the method with a parameter:

    get_1_type("xxx")
    

    Edit 1

    Some links about Ruby blocks:

    Start with this one

    Link 1

    Link 2