Module: Protector::Adapters::ActiveRecord

Defined in:
lib/protector/adapters/active_record.rb,
lib/protector/adapters/active_record/base.rb,
lib/protector/adapters/active_record/relation.rb,
lib/protector/adapters/active_record/preloader.rb,
lib/protector/adapters/active_record/association.rb,
lib/protector/adapters/active_record/validations.rb,
lib/protector/adapters/active_record/collection_proxy.rb,
lib/protector/adapters/active_record/singular_association.rb

Overview

ActiveRecord adapter

Defined Under Namespace

Modules: Association, Base, CollectionProxy, Preloader, Relation, SingularAssociation, Validations

Class Method Summary collapse

Class Method Details

.activate!Object

YIP YIP! Monkey-Patch the ActiveRecord.



15
16
17
18
19
20
21
22
23
24
25
26
27
# 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) ⇒ Boolean

Returns:

  • (Boolean)


33
34
35
36
# 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?Boolean

Returns:

  • (Boolean)


29
30
31
# 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_procObject



38
39
40
41
42
43
44
45
46
# 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