module Protector::Adapters::ActiveRecord

ActiveRecord adapter

Public Class Methods

activate!() click to toggle source

YIP YIP! Monkey-Patch the ActiveRecord.

# File lib/protector/adapters/active_record.rb, line 15
def self.activate!
  return false unless defined?(::ActiveRecord)

  ::ActiveRecord::Base.send :include, Protector::Adapters::ActiveRecord::Base
  ::ActiveRecord::Base.send :include, Protector::Adapters::ActiveRecord::Validations
  ::ActiveRecord::Relation.send :include, Protector::Adapters::ActiveRecord::Relation
  ::ActiveRecord::Associations::SingularAssociation.send :include, Protector::Adapters::ActiveRecord::Association
  ::ActiveRecord::Associations::SingularAssociation.send :include, Protector::Adapters::ActiveRecord::SingularAssociation
  ::ActiveRecord::Associations::CollectionAssociation.send :include, Protector::Adapters::ActiveRecord::Association
  ::ActiveRecord::Associations::Preloader.send :include, Protector::Adapters::ActiveRecord::Preloader
  ::ActiveRecord::Associations::Preloader::Association.send :include, Protector::Adapters::ActiveRecord::Preloader::Association
  ::ActiveRecord::Associations::CollectionProxy.send :include, Protector::Adapters::ActiveRecord::CollectionProxy
end
is?(instance) click to toggle source
# File lib/protector/adapters/active_record.rb, line 33
def self.is?(instance)
  instance.is_a?(::ActiveRecord::Relation) ||
  (instance.is_a?(Class) && instance < ActiveRecord::Base)
end
modern?() click to toggle source
# File lib/protector/adapters/active_record.rb, line 29
def self.modern?
  Gem::Version.new(::ActiveRecord::VERSION::STRING) >= Gem::Version.new('4.0.0')
end
null_proc() click to toggle source
# File lib/protector/adapters/active_record.rb, line 38
def self.null_proc
  # rubocop:disable IndentationWidth, EndAlignment
  @null_proc ||= if modern?
    proc { none }
  else
    proc { where('1=0') }
  end
  # rubocop:enable IndentationWidth, EndAlignment
end