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

Overview

ActiveRecord adapter

Defined Under Namespace

Modules: Association, Base, Preloader, Relation

Class Method Summary collapse

Class Method Details

.activate!Object

YIP YIP! Monkey-Patch the ActiveRecord.



12
13
14
15
16
17
18
19
20
21
# File 'lib/protector/adapters/active_record.rb', line 12

def self.activate!
  return false unless defined?(::ActiveRecord)

  ::ActiveRecord::Base.send :include, Protector::Adapters::ActiveRecord::Base
  ::ActiveRecord::Relation.send :include, Protector::Adapters::ActiveRecord::Relation
  ::ActiveRecord::Associations::SingularAssociation.send :include, Protector::Adapters::ActiveRecord::Association
  ::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
end

.is?(instance) ⇒ Boolean

Returns:

  • (Boolean)


27
28
29
30
# File 'lib/protector/adapters/active_record.rb', line 27

def self.is?(instance)
  instance.is_a?(::ActiveRecord::Relation) ||
  (instance.is_a?(Class) && instance < ActiveRecord::Base)
end

.modern?Boolean

Returns:

  • (Boolean)


23
24
25
# File 'lib/protector/adapters/active_record.rb', line 23

def self.modern?
  Gem::Version.new(::ActiveRecord::VERSION::STRING) >= Gem::Version.new('4.0.0')
end

.null_procObject



32
33
34
35
36
37
38
# File 'lib/protector/adapters/active_record.rb', line 32

def self.null_proc
  @null_proc ||= if modern?
    Proc.new{ none }
  else
    Proc.new{ where("1=0") }
  end
end