Class: UniqueValidationInspector::Inspector

Inherits:
Object
  • Object
show all
Defined in:
lib/unique_validation_inspector.rb

Defined Under Namespace

Classes: Railtie

Constant Summary collapse

VERSION =
UniqueValidationInspector::VERSION

Instance Method Summary collapse

Constructor Details

#initialize(app) ⇒ Inspector

Returns a new instance of Inspector.



13
14
15
16
# File 'lib/unique_validation_inspector.rb', line 13

def initialize(app)
  @app = app

end

Instance Method Details

#defined_unique_indexes(table_name, fields, scope) ⇒ Object



37
38
39
40
41
42
43
44
# File 'lib/unique_validation_inspector.rb', line 37

def defined_unique_indexes(table_name, fields, scope)
  #https://dev.mysql.com/doc/refman/5.7/en/multiple-column-indexes.html

  columns = []
  columns += fields
  columns.unshift(scope) if scope
  ActiveRecord::Base.connection.indexes(table_name.to_sym).any? { |i| [lambda { |i| i.columns == columns.map(&:to_s) }].all? { |check| check[i] } }
end

#defined_unique_validationsObject



22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/unique_validation_inspector.rb', line 22

def defined_unique_validations
  ActiveRecord::Base.descendants.reject do |model|
    if model.abstract_class?
      true
    else
      validators = model.validators.select {|v| v.is_a?(ActiveRecord::Validations::UniquenessValidator) }
      validators.empty?
    end
  end.collect do |model|
    validators = model.validators.select {|v| v.is_a?(ActiveRecord::Validations::UniquenessValidator) }
    {:model => model,  :validators => validators}
  end

end

#load_everything!Object



18
19
20
# File 'lib/unique_validation_inspector.rb', line 18

def load_everything!
  @app.eager_load!
end