我有一个融合了一些默认值,像这样一个@lead
模型:如果属性是零,然后使用默认值从哈希
DEFAULTS = {
inflation: 4.224/100,
usage: 12_000,
cost: 3250
}.freeze
@lead.attributes.symbolize_keys.reverse_merge!(DEFAULTS)
这一半的作品,但它不会使用DEFAULT
利用率会@lead
用法是nil
。如何申请DEFAULT
值给@lead
只有如果@lead
的价值是nil
?
我不想存储在迁移默认值有许多原因让出去了。
谢谢。
你看了一下['散列#merge']块的版本(https://ruby-doc.org/core-2.2.0/Hash.html#method-i-merge)?例如'@ lead.attributes.symbolize_keys.merge(DEFAULTS){| key,old_val,new_val | old_val.nil? ? new_val:old_val}'btw'reverse_merge!'with'!'(bang)将不会产生任何影响,因为'attributes.symbolize_keys'创建的链我相信是一个副本而不是引用 – engineersmnky
这很好,谢谢! –
我会将块写为'{| _,old_val,new_val | old_val || new_val}' – moveson