1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

refactor, don't duplicate presence validator logic.

This is a small refactoring that simplifies the Active Record specific
lenght validator.
This commit is contained in:
Yves Senn 2015-06-22 15:41:02 +02:00
parent 792de3f1ed
commit 006a4d787e

View file

@ -1,18 +1,12 @@
module ActiveRecord module ActiveRecord
module Validations module Validations
class PresenceValidator < ActiveModel::Validations::PresenceValidator # :nodoc: class PresenceValidator < ActiveModel::Validations::PresenceValidator # :nodoc:
def validate(record) def validate_each(record, attribute, association_or_value)
return unless should_validate?(record) return unless should_validate?(record)
super if record.class._reflect_on_association(attribute)
attributes.each do |attribute| association_or_value = Array.wrap(association_or_value).reject(&:marked_for_destruction?)
next unless record.class._reflect_on_association(attribute)
associated_records = Array.wrap(record.send(attribute))
# Superclass validates presence. Ensure present records aren't about to be destroyed.
if associated_records.present? && associated_records.all?(&:marked_for_destruction?)
record.errors.add(attribute, :blank, options)
end
end end
super
end end
end end