如何在rails after_kind 钩子中调用define_method

how to call define_method in rails after_kind hook

当我在钩子函数中调用 define_method 时: 发生错误:

undefined method `define_method' for #<Myentity:0x007f9e4eda5928>

这里有一个例子:

class EntityInstance < ApplicationRecord

  after_find :define_relation

  def define_relation
    define_method "example" do |x|

    end
  end

end

如何在hook方法中改变上下文或者如何在hook方法中使用这个函数?

非常感谢!

define_method 应在 class 的上下文中调用。

意思是,取决于你想定义方法的位置(在 Myentity 实例的单例 class 或 Myentity class 中)你应该使用任一

 def define_relation
   # define method available only to this particular instance of Myentity
   class_eval do
     define_method "example" do |x|
     end
   end
 end

 def define_relation
   # define a method available to all instances of Myentity class
   self.class_eval do
     define_method "example" do |x|
     end
   end
 end