Ruby check if nil and set different value

Viewed 49

How can I check if the something is nil and if its nil then use a different function to set value.

Integer($evm.root.attributes["dialog_cloud_network"]) can be nil in some cases and so I want to use a different function query_catalogitem(:cloud_network) to set value.

Example:

cloud_network_id =  Integer($evm.root.attributes["dialog_cloud_network"]) || query_catalogitem(:cloud_network). 

The above doesn't work because cloud_network_id ends with value nil instead of getting the value from query_catalogitem(:cloud_network). How can I resolve this?

2 Answers

I would do

cloud_network_id = $evm.root.attributes["dialog_cloud_network"]&.to_i || 
                   query_catalogitem(:cloud_network)

You need to pass exception: false to Integer

In this case Integer may be nil (if impossible to convert $evm.root.attributes["dialog_cloud_network"] to Integer)

Also is better to specify base (10)

cloud_network_id =
  Integer($evm.root.attributes["dialog_cloud_network"], 10, exception: false) ||
    query_catalogitem(:cloud_network)
Related