gpt4 book ai didi

ruby-on-rails - Ruby:通过点击访问值

转载 作者:太空宇宙 更新时间:2023-11-03 18:07:13 25 4
gpt4 key购买 nike

我有一个 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 有一个 :price 6.50:size 8000。如果我不将 DEFAULTS 合并到 @lead.attributes 中,我会得到一个 nil 错误:

undefined method `*' for nil:NilClass

简而言之,为什么当我点击它们时无法访问我的属性?我只想在匹配的 @lead 属性为 nil 时加载 DEFAULTS

最佳答案

你可能想使用 reverse_merge (或者只是在相反的方向合并),否则merge将始终使用默认值覆盖现有的 @lead.attributes

lead_attributes 更改为:

def lead_attributes
@lead.attributes.symbolize_keys.reverse_merge(DEFAULTS)
end

或者:

def lead_attributes
DEFAULTS.merge(@lead.attributes.symbolize_keys)
end

关于ruby-on-rails - Ruby:通过点击访问值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42318408/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com