diff --git a/lib/simple_captcha/engine.rb b/lib/simple_captcha/engine.rb index faea91d..5b5ad4d 100644 --- a/lib/simple_captcha/engine.rb +++ b/lib/simple_captcha/engine.rb @@ -15,6 +15,8 @@ class Engine < ::Rails::Engine end when 'mongoid' require 'simple_captcha/simple_captcha_data_mongoid.rb' + when 'mongomapper' + require 'simple_captcha/simple_captcha_data_mongomapper.rb' when 'redis' require 'simple_captcha/simple_captcha_data_redis.rb' else diff --git a/lib/simple_captcha/simple_captcha_data_mongomapper.rb b/lib/simple_captcha/simple_captcha_data_mongomapper.rb new file mode 100644 index 0000000..435bb76 --- /dev/null +++ b/lib/simple_captcha/simple_captcha_data_mongomapper.rb @@ -0,0 +1,26 @@ +module SimpleCaptcha + class SimpleCaptchaData + include MongoMapper::Document + plugin MongoMapper::Plugins::Timestamps + timestamps! + + key :key, String, :required => true + key :value, String, :required => true + + class << self + def get_data(key) + data = where(:key => key).first || new(:key => key) + end + + def remove_data(key) + where(:key => key).remove + clear_old_data(1.hour.ago) + end + + def clear_old_data(time = 1.hour.ago) + return unless Time === time + where(:updated_at.lte => time).remove + end + end + end +end \ No newline at end of file