class RateLimiter::ModelConfig

Sets up RateLimiter configuration for an ActiveRecord model.

Public Class Methods

new(model_class) click to toggle source
# File lib/rate_limiter/model_config.rb, line 8
def initialize(model_class)
  @model_class = model_class
end

Public Instance Methods

setup(options = {}) click to toggle source

Set up `@model_class` for RateLimiter. Includes callbacks, class attributes, instance methods, etc.

# File lib/rate_limiter/model_config.rb, line 14
def setup(options = {})
  @model_class.send(:include, Model::InstanceMethods)
  setup_options(options)
  setup_validations
end

Private Instance Methods

setup_options(options) click to toggle source
# File lib/rate_limiter/model_config.rb, line 22
def setup_options(options)
  @model_class.class_attribute :rate_limiter_options
  @model_class.rate_limiter_options = options.dup
end
setup_validations() click to toggle source
# File lib/rate_limiter/model_config.rb, line 27
def setup_validations
  # TODO: Maybe make it so the context can be configured.
  @model_class.validate(on: :create) do |record|
    Validator.new(record).validate
  end
end