Skip to content

Commit 3f81469

Browse files
Merge pull request rails#45754 from jonathanhefner/has_secure_password-conditional-password-example
Add example of conditionally requiring a password [ci-skip]
2 parents 3967766 + f53e3ad commit 3f81469

File tree

1 file changed

+24
-1
lines changed

1 file changed

+24
-1
lines changed

activemodel/lib/active_model/secure_password.rb

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ module ClassMethods
4545
#
4646
# ==== Examples
4747
#
48-
# Using Active Record, which automatically includes ActiveModel::SecurePassword:
48+
# ===== Using Active Record (which automatically includes ActiveModel::SecurePassword)
4949
#
5050
# # Schema: User(name:string, password_digest:string, recovery_password_digest:string)
5151
# class User < ActiveRecord::Base
@@ -77,6 +77,29 @@ module ClassMethods
7777
#
7878
# user.authenticate("vr00m") # => false, old password
7979
# user.authenticate("nohack4u") # => user
80+
#
81+
# ===== Conditionally requiring a password
82+
#
83+
# class Account
84+
# include ActiveModel::SecurePassword
85+
#
86+
# attr_accessor :is_guest, :password_digest
87+
#
88+
# has_secure_password
89+
#
90+
# def errors
91+
# errors = super
92+
# errors.delete(:password, :blank) if is_guest
93+
# errors
94+
# end
95+
# end
96+
#
97+
# account = Account.new
98+
# account.valid? # => false, password required
99+
#
100+
# account.is_guest = true
101+
# account.valid? # => true
102+
#
80103
def has_secure_password(attribute = :password, validations: true)
81104
# Load bcrypt gem only when has_secure_password is used.
82105
# This is to avoid ActiveModel (and by extension the entire framework)

0 commit comments

Comments
 (0)