在一个rails应用程序中,我有一个称为Record的模型的许多属性。我想要设计一种方法,在属性上调用时返回属性的名称(实际上它是Record对象上的一个方法)。然后这个名字被传递给一个哈希,它返回一个数字(为了这个例子,说这个数字是一个百分比,然后乘以原始属性值得到一个new value
)。为文字哈希查询获取Ruby方法的名称
例如,假设我的Record具有四个属性:teachers
,students
,principals
和parents
。然后,该方法将如下所示:
def name
**something here**
end
和相应的new_value
方法和PRECENTAGE
哈希是这样的:
def new_value
self * PERCENTAGE[self.name]
end
PERCENTAGE = {
"teachers" => 0.40,
"students" => 0.53,
"principals" => 0.21,
"parents" => 0.87
}
然后,执行这件事,我会做Record.students.new_value
,这会根据哈希中获得的百分比返回新的学生数量。
我知道,让当前正在执行的方法的名称,你可以做这样的事情:(上http://ryat.la/7RDk找到)
def this_method
__method__
end
但不会为我工作,因为我需要以前的名称执行的方法。
如果您对完成目标的替代方法有任何建议,我很乐意尝试其他方法。
你能发表一个你想要的方法调用会是什么样子的例子吗?令人困惑的部分(对我来说)就是你说你在属性上调用方法的地方。你的意思是'Record.students.some_method'或'some_method(Record.students)'?或者是其他东西? – Larsenal 2011-06-08 17:45:42
在上面的代码中,我使用前者,并将自己传递给哈希。这个例子看起来像'Record.students.new_value',它会返回'self * PERCENTAGE [self.name]'。后面的选项也可以。 (编辑的问题 - 抱歉的混乱!) – 2011-06-08 17:50:10