2012-11-01 17 views
8

Hesap sahibine, sabit bir zaman aralığından sonra hesaplarına erişemeyecekleri bir şekilde, abonelik tipi bir işlev eklemek istiyorum. Not: Onların hesabını veritabanından silmek istemiyorum. Uygulamamda zaten devise-2.1.2 yükledim. Herhangi bir bedenin herhangi bir fikri var mı? Nasıl yapılabilir? Ben Ruby on rails için acemi oldum, bu yüzden adımları açıklarsanız bana çok yardımcı olacaktır.Kullanıcılar Devise'yi kullanarak nasıl kilitlenir?

cevap

18

Devise Sen :failed_attempts.

1. Adım ayarlayın config/initializers/devise.rb için lock_strategy set belirlemek zorunda Devise Lockable Documentation

yılında :lockable seçeneği, çek ile bir Buil-in çözümü var kullanımı:

# Defines which strategy will be used to lock an account. 
config.lock_strategy = :failed_attempts 

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

# Defines which strategy will be used to unlock an account. 
# :time = Re-enables login after a certain amount of time (see :unlock_in below) 
config.unlock_strategy = :time 

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

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

Aşama 2 Sizin bu gibi Modeli kilitlenebilir eklemek gerekir:

class Example < ActiveRecord::Base 
    devise :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable, 
     :lockable 

Adım 3 göçler vasiyetle esere

class AddLockableToExamples < ActiveRecord::Migration 
    def change 
    add_column :examples, :failed_attempts, :integer, default: 0 
    add_column :examples, :unlock_token, :string 
    add_column :examples, :locked_at, :datetime 
    end 
end 

Selamlar yapmak üret !!

+0

Zihnimde bu şeyi silmek istedim, 'başarısız denemeler', herhangi bir kullanıcı belirli sayıda kez kaydolmayı denediğinde yalnızca bu durum için geçerlidir. –

+0

Ayrıca belgeler, bir hesabı kilitlemek için bir zaman tipi stratejisinin kullanılabileceğini söylüyor. Bu yüzden, aboneliği biter bitmez hesabına birkaç ay boyunca abonelik vermek istiyorum, hesabını kullanamayacak. Mümkün mü? –

+0

Kullanıcı oturum açmayı x kez denediğinde kilitlenir ve unlock_strategy'yi zamana ayarlayabilirsiniz. İhtiyacın olan budur! – felipeclopes