2012-10-04 40 views
0

我有一个单独的类象红宝石,define_method,单身,继承

module Database 
    class Table 
    include Singleton 
    # ... 
    end 
end 

而在这个类我使用的方法define_method - 方法,并得到:

/home/jrn/Development/RocketRuby/lib/modules/database.rb:184:in `block in register_methods': undefined method `define_method' for #<Accounting::UsersTable:0x00000001f103c8> (NoMethodError) 

(如您可以看到,类Table已被模块0123xx中的UsersTable类继承)

什么可能出错?使用define_methodsSingleton时,典型的错误是什么?

你的Joern

回答

0

你试过类似的东西吗?

class Table 
    include Singleton 

    def register_methods 
    self.class.send(:define_method, :hello) { puts "Hello!" } 
    end 


    # or ... 

    def register_methods 
    define_singleton_method(:hello) { puts "Hello!" } 
    end 
+0

不完全是,但我尝试了一个几乎相同的丑陋解决方法。谢谢,我可以尝试你的变化 – JAkk

+0

谢天谢地!你的解决方案正常运作我也去'self.class',但我尝试'self.class.define_method',这不起作用,另一方面'self.class.send(:define_method,...){}'运行良好! – JAkk