It should be safe.  The `&&` in Ruby is "short-circuit", which means that the second part is evaluated ONLY if the first part isn't enough to give the proper answer. 

For the `&&` this means that if the first part is `false` or `nil`, we know that the result is `false` or `nil`. No need to evaluate the second part, just return `false` or `nil`.

If the first part returns something else than `false` or `nil`, evaluate the second part and return the result of it.

In this case:

* If `@current_community` is `nil` throw an error
* If `@current_community.payment_gateways` is `nil` return `nil`
* If `@current_community.payment_gateways` is `false` return `false`
* If `@current_community.payment_gateways` is an empty array return `nil` because `first` of an empty array is `nil`
* If `@current_community.payment_gateways` is a non-empty array, return the first of it.