class ConsistencyFail::Introspectors::ValidatesUniquenessOf
Public Instance Methods
instances(model)
click to toggle source
# File lib/consistency_fail/introspectors/validates_uniqueness_of.rb, line 6 def instances(model) model.validators.select do |v| v.class == ActiveRecord::Validations::UniquenessValidator end end
missing_indexes(model)
click to toggle source
# File lib/consistency_fail/introspectors/validates_uniqueness_of.rb, line 24 def missing_indexes(model) return [] unless model.connection.tables.include? model.table_name existing_indexes = TableData.new.unique_indexes(model) desired_indexes(model).reject do |index| existing_indexes.include?(index) end end
Private Instance Methods
desired_indexes(model)
click to toggle source
# File lib/consistency_fail/introspectors/validates_uniqueness_of.rb, line 12 def desired_indexes(model) instances(model).map do |v| v.attributes.map do |attribute| scoped_columns = v.options[:scope] || [] ConsistencyFail::Index.new(model, model.table_name, [attribute, *scoped_columns]) end end.flatten end