Cómo hacer que Devise se pueda bloquear con el número de intentos fallidos

Usando Devise 2.1.2 y Rails 3.2.6

Estoy haciendo estas preguntas y respuestas solo en caso de que otros se topen con este problema porque encontré poca documentación dispersa.

Este error puede ocurrir si intenta configurarDevise como bloqueable

undefined local variable or method `locked_at' for [someClass]

Significa que su modelo no tiene los atributos apropiados.

Requisitos previos: configure lo siguiente en config / initializers / devise.rb

# ==> Configuration for :lockable
# Defines which strategy will be used to lock an account.
# :failed_attempts = Locks an account after a number of failed attempts to sign in.
# :none            = No lock strategy. You should handle locking by yourself.
config.lock_strategy = :failed_attempts

# Defines which key will be used when locking and unlocking an account
config.unlock_keys = [ :email ]

# Defines which strategy will be used to unlock an account.
# :email = Sends an unlock link to the user email
# :time  = Re-enables login after a certain amount of time (see :unlock_in below)
# :both  = Enables both strategies
# :none  = No unlock strategy. You should handle unlocking by yourself.
config.unlock_strategy = :email

# Number of authentication tries before locking an account if lock_strategy
# is failed attempts.
config.maximum_attempts = 20

# Time interval to unlock the account if :time is enabled as unlock_strategy.
# config.unlock_in = 1.hour

Configura tu modelo para incluirdevise :lockable:

class Example < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :token_authenticatable, :confirmable,
  # :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable, :lockable

Respuestas a la pregunta(2)

Su respuesta a la pregunta