Class: UniqueValidationInspector::Inspector
- Inherits:
-
Object
- Object
- UniqueValidationInspector::Inspector
- Defined in:
- lib/unique_validation_inspector.rb
Defined Under Namespace
Classes: Railtie
Constant Summary collapse
- VERSION =
UniqueValidationInspector::VERSION
Instance Method Summary collapse
- #defined_unique_indexes(table_name, fields, scope) ⇒ Object
- #defined_unique_validations ⇒ Object
-
#initialize(app) ⇒ Inspector
constructor
A new instance of Inspector.
- #load_everything! ⇒ Object
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_validations ⇒ Object
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 |