在一個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