2011-12-13 39 views
3
class Person 
    DEFAULT_MALE_NAME = "Joe" 
    DEFAULT_FEMALE_NAME = "Jane" 

    def give_default_name 
    self.name = self.class.send("DEFAULT_#{gender.upcase}_NAME") 
    end 

end 

这不起作用,因为“self.class.send”最终会调用User.DEFAULT_MALE_NAME,我希望它执行User :: DEFAULT_MALE_NAME。什么是范围解析运算符的“发送”等效物?

什么是“发送”的“::”等值?

回答

5

const_get,但你应该通过不断的名字作为一个符号

self.class.const_get(:"DEFAULT_#{gender.upcase}_NAME") 
+0

嗯,也适用于字符串为好,至少在1.9.2 –

+0

好吧,也许“需要”是一个有点强。我是以文档为基础的 – Gareth

相关问题