1
訪問值我有一個Calculator
類,讀起來就像這樣:紅寶石:通過接口
class Calculator
DEFAULTS = {
price: 4.25, size: 10000
}.freeze
def initialize(lead)
@lead = lead
end
def lead_attributes
@lead.attributes.symbolize_keys.merge(DEFAULTS)
end
def hash # massively simplified
lead_attributes.tap do |h|
h[:total] = h[:price] * h[:size]
end
end
end
我的問題是hash
方法總是返回從DEFAULTS
值雖然具有的6.50
和:price
@lead
:size
的8000
。如果我不合並DEFAULTS
爲@lead.attributes
我得到一個零錯誤:
undefined method `*' for nil:NilClass
總之,爲什麼沒有我的屬性,當我點擊他們訪問?只有匹配的@lead
屬性爲nil
,我纔會加載DEFAULTS
。
上['哈希#merge'](參考到文檔http://ruby-doc.org/core/Hash .html#method-i-merge)在這裏會有所幫助。另外,在純ruby中沒有方法'Hash#symbolize_keys'。 – mudasobwa
啊,非常感謝!哈哈,把頭髮扯出來。 –