【发布时间】:2017-07-08 04:31:29
【问题描述】:
我有一个 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 的值,尽管@lead 具有6.50 的:price 和8000 的:size。如果我不将 DEFAULTS 合并到 @lead.attributes 中,我会得到一个 nil 错误:
undefined method `*' for nil:NilClass
简而言之,为什么我在点击属性时无法访问它们?仅当匹配的 @lead 属性为 nil 时,我才想加载 DEFAULTS。
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-4 hash