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
メソッドは常に@lead
:price
6.50
との持つにもかかわらず、DEFAULTS
から値を返すことです:size
は8000
である。なぜ私の属性は、私はそれらをタップしたときにアクセスすることはできません、要するに
undefined method `*' for nil:NilClass
:私は@lead.attributes
にDEFAULTS
をマージしていない場合、私はnilにエラーが出ますか?一致する@lead
の属性がnil
の場合にのみ、DEFAULTS
をロードします。
[ 'ハッシュ#のmerge']上の文書への参照(http://ruby-doc.org/core/Hash .html#method-i-merge)が役に立つでしょう。また、単純なルビで 'Hash#symbolize_keys'メソッドはありません。 – mudasobwa
ああ、ありがとう!私の髪の毛を引き裂いて、その上に。 –