The Devise authentication framework uses flash notices everywhere. This makes it easy to integrate with apps but it leads to poor user experience sometimes.
I am wonde
You can customize your devise flash messages with I18n backend which devise supports. If you set nothing for particular key, the empty flash message won't be shown, for example for sign_in and sign_out:
en:
devise:
failure:
unauthenticated: 'You need to sign in or sign up before continuing.'
unconfirmed: 'You have to confirm your account before continuing.'
locked: 'Your account is locked.'
invalid: 'Invalid email or password.'
invalid_token: 'Invalid authentication token.'
timeout: 'Your session expired, please sign in again to continue.'
inactive: 'Your account was not activated yet.'
sessions:
signed_in: ""
signed_out: ""
UPD.
You should not remove the key otherwise you will get an error. To not display empty flash messages you should do simple check in the view (for ex. with haml):
- unless notice.blank? && alert.blank?
#flash
.wrapper
- unless notice.blank?
%p.notice= notice
- unless alert.blank?
%p.alert= alert