如果attribute为nil,则使用hash的默认值

时间:2016-11-14 18:15:38

标签: ruby-on-rails ruby ruby-on-rails-4 ruby-on-rails-5

我有一个模型将@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

我不想出于多种原因在迁移中存储默认设置,以便将其删除。

感谢。

1 个答案:

答案 0 :(得分:0)

DEFAULTS = {
  inflation: 4.224 / 100,
  usage: 12_000, 
  cost: 3250
}.freeze

if !@lead
    @lead.attributes.symbolize_keys.reverse_merge!(DEFAULTS)
end

当@lead为nil时,!运算符将生成@lead eq fals,否则使其为eq true。

相关问题