What does !! mean in ruby?

Not not.

It’s used to convert a value to a boolean:

!!nil   #=> false
!!"abc" #=> true
!!false #=> false

It’s usually not necessary to use though since the only false values to Ruby are nil and false, so it’s usually best to let that convention stand.

Think of it as

!(!some_val)

One thing that is it used for legitimately is preventing a huge chunk of data from being returned. For example you probably don’t want to return 3MB of image data in your has_image? method, or you may not want to return your entire user object in the logged_in? method. Using !! converts these objects to a simple true/false.

Leave a Comment