blank?
will load the entire array, then check to see if the array is empty.
On the other hand, empty?
asks the database for a count, and checks to see if that count is zero or not. This might not make a difference in small datasets (like development), but it can make a big difference in databases with large datasets (like production).
It will also make a huge difference in memory consumption when thousands of records are loaded vs a single integer.
http://hashrocket.com/blog/posts/rails-quick-tips-easy-activerecord-optimizations