Module: RateLimiter::OnCreateRecord
- Included in:
- Invite, Post, PostAction, Topic
- Defined in:
- lib/rate_limiter/on_create_record.rb
Overview
A mixin we can use on ActiveRecord Models to automatically rate limit them based on a SiteSetting.
It expects a SiteSetting called ‘rate_limit_create_model_name` where `model_name` is the class name of your model, underscored.
Defined Under Namespace
Modules: ClassMethods
Class Method Summary collapse
Instance Method Summary collapse
-
#default_rate_limiter ⇒ Object
Over write to define your own rate limiter.
-
#disable_rate_limits! ⇒ Object
For the lifetime of this instance, don’t enforce rate limits.
Class Method Details
.included(base) ⇒ Object
25 26 27 |
# File 'lib/rate_limiter/on_create_record.rb', line 25 def self.included(base) base.extend(ClassMethods) end |
Instance Method Details
#default_rate_limiter ⇒ Object
Over write to define your own rate limiter
12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/rate_limiter/on_create_record.rb', line 12 def default_rate_limiter return @rate_limiter if @rate_limiter.present? limit_key = "create_#{self.class.name.underscore}" max_setting = if user && user.new_user? && SiteSetting.has_setting?("rate_limit_new_user_#{limit_key}") SiteSetting.get("rate_limit_new_user_#{limit_key}") else SiteSetting.get("rate_limit_#{limit_key}") end @rate_limiter = RateLimiter.new(user, limit_key, 1, max_setting) end |
#disable_rate_limits! ⇒ Object
For the lifetime of this instance, don’t enforce rate limits.
30 31 32 |
# File 'lib/rate_limiter/on_create_record.rb', line 30 def disable_rate_limits! @rate_limits_disabled = true end |