Ich habe ein Modell bekommt, das wie so ein @lead
mit einigen Standardwerten übergeht:Wenn Attribut Null ist dann Standardwert verwenden, um von Hash-
DEFAULTS = {
inflation: 4.224/100,
usage: 12_000,
cost: 3250
}.freeze
@lead.attributes.symbolize_keys.reverse_merge!(DEFAULTS)
in dieser Halbzeit funktioniert, aber es wird nicht die DEFAULT
Nutzung, wenn die Verwendung @lead
Verwendung ist nil
. Wie kann ich DEFAULT
Werte auf die @lead
nur anwenden, wenn der @lead
Wert nil
ist?
Ich möchte aus mehreren Gründen keine Standardeinstellungen in der Migration speichern, das ist also out.
Danke.
haben Sie sich die Blockversion von ['Hash # merge'] (https://ruby-doc.org/core-2.0/Hash.html#method-i-merge) angesehen? z.B. '@ lead.attributes.symbole_keys.merge (DEFAULTS) {| key, old_val, new_val | alt_val.nil? ? new_val: old_val} 'btw' reverse_merge! 'mit dem'! '(bang) hat keine Auswirkungen seit der Kette von' attributes.symbole_keys' Ich glaube, es ist eine Kopie keine Referenz – engineersmnky
Das hat super funktioniert, danke! –
Ich würde den Block als '{_ _, old_val, new_val | schreiben alt_val || new_val} ' – moveson