Module: Devise::Models::Confirmable
- Defined in:
- lib/devise/models/confirmable.rb
Overview
Confirmable is responsible to verify if an account is already confirmed to sign in, and to send emails with confirmation instructions. Confirmation instructions are sent to the user email after creating a record, after updating it’s email and also when manually requested by a new confirmation instruction request. Whenever the user update it’s email, his account is automatically unconfirmed, it means it won’t be able to sign in again without confirming the account again through the email that was sent.
Configuration:
confirm_within: the time you want the user will have to confirm it's account
without blocking his access. When confirm_within is zero, the
user won't be able to sign in without confirming. You can
use this to let your user access some features of your
application without confirming the account, but blocking it
after a certain period (ie 7 days). By default confirm_within is
zero, it means users always have to confirm to sign in.
Examples:
User.find(1).confirm! # returns true unless it's already confirmed
User.find(1).confirmed? # true/false
User.find(1).send_confirmation_instructions # manually send instructions
User.find(1).reset_confirmation! # reset confirmation status and send instructions
Defined Under Namespace
Modules: ClassMethods
Class Method Summary collapse
Instance Method Summary collapse
-
#active? ⇒ Boolean
Verify whether a user is active to sign in or not.
-
#confirm! ⇒ Object
Confirm a user by setting it’s confirmed_at to actual time.
-
#confirmed? ⇒ Boolean
Verifies whether a user is confirmed or not.
-
#reset_confirmation! ⇒ Object
Remove confirmation date and send confirmation instructions, to ensure after sending these instructions the user won’t be able to sign in without confirming it’s account.
-
#send_confirmation_instructions ⇒ Object
Send confirmation instructions by email.
Class Method Details
.included(base) ⇒ Object
33 34 35 36 37 38 39 40 |
# File 'lib/devise/models/confirmable.rb', line 33 def self.included(base) base.class_eval do extend ClassMethods before_create :generate_confirmation_token after_create :send_confirmation_instructions end end |
Instance Method Details
#active? ⇒ Boolean
Verify whether a user is active to sign in or not. If the user is already confirmed, it should never be blocked. Otherwise we need to calculate if the confirm time has not expired for this user, in other words, if the confirmation is still valid.
77 78 79 |
# File 'lib/devise/models/confirmable.rb', line 77 def active? confirmed? || confirmation_period_valid? end |
#confirm! ⇒ Object
Confirm a user by setting it’s confirmed_at to actual time. If the user is already confirmed, add en error to email field
44 45 46 47 48 49 50 |
# File 'lib/devise/models/confirmable.rb', line 44 def confirm! unless_confirmed do self.confirmation_token = nil self.confirmed_at = Time.now save(false) end end |
#confirmed? ⇒ Boolean
Verifies whether a user is confirmed or not
53 54 55 |
# File 'lib/devise/models/confirmable.rb', line 53 def confirmed? !new_record? && confirmed_at? end |
#reset_confirmation! ⇒ Object
Remove confirmation date and send confirmation instructions, to ensure after sending these instructions the user won’t be able to sign in without confirming it’s account
65 66 67 68 69 70 71 |
# File 'lib/devise/models/confirmable.rb', line 65 def reset_confirmation! unless_confirmed do generate_confirmation_token save(false) send_confirmation_instructions end end |
#send_confirmation_instructions ⇒ Object
Send confirmation instructions by email
58 59 60 |
# File 'lib/devise/models/confirmable.rb', line 58 def send_confirmation_instructions ::DeviseMailer.deliver_confirmation_instructions(self) end |