Module: RescueFromDuplicate
- Defined in:
- lib/rescue_from_duplicate/rescuer.rb,
lib/rescue_from_duplicate/active_record.rb,
lib/rescue_from_duplicate/uniqueness_rescuer.rb,
lib/rescue_from_duplicate/missing_unique_index.rb
Defined Under Namespace
Modules: ActiveRecord Classes: MissingUniqueIndex, Rescuer, UniquenessRescuer
Class Method Summary collapse
Class Method Details
.missing_unique_indexes ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/rescue_from_duplicate/active_record.rb', line 9 def self.missing_unique_indexes klasses = ::ActiveRecord::Base.descendants.select do |klass| klass.validators.any? { |v| v.is_a?(::ActiveRecord::Validations::UniquenessValidator) || klass._rescue_from_duplicates.any? } end missing_unique_indexes = [] klasses.each do |klass| klass._rescue_from_duplicate_handlers.each do |handler| next unless klass.connection.table_exists?(klass.table_name) unique_indexes = klass.connection.indexes(klass.table_name).select(&:unique) unless unique_indexes.any? { |index| index.columns.map(&:to_s).sort == handler.columns } missing_unique_indexes << MissingUniqueIndex.new(klass, handler.attributes, handler.columns) end end end missing_unique_indexes end |