class ActiveRecord::DataIntegrity::Validation::Presence
Checks foreign key presence to the parent table of belongs_to association
Public Instance Methods
call()
click to toggle source
# File lib/active_record/data_integrity/cop/validation/presence.rb, line 10 def call results = validators.map do |validator| validator.attributes.map do |attribute| valid?(attribute) end end.flatten results.none?(&:!) end
Private Instance Methods
find_column(attribute)
click to toggle source
# File lib/active_record/data_integrity/cop/validation/presence.rb, line 38 def find_column(attribute) connection .columns(model.table_name) .find { |col| col.name == attribute.to_s } end
valid?(attribute)
click to toggle source
# File lib/active_record/data_integrity/cop/validation/presence.rb, line 22 def valid?(attribute) column = find_column(attribute) return true if column.nil? result = !column.null progress(result, 'D') !column && log("has nullable column #{attribute} with presence validation") unless result result end
validators()
click to toggle source
# File lib/active_record/data_integrity/cop/validation/presence.rb, line 32 def validators model .validators .select { |v| v.is_a?(ActiveRecord::Validations::PresenceValidator) } end