lib/hydra/validations/enumerable_behavior.rb in hydra-validations-0.3.1 vs lib/hydra/validations/enumerable_behavior.rb in hydra-validations-0.3.2

- old
+ new

@@ -5,23 +5,29 @@ # adding validation for each member of an enumerable attribute value. # # Behavior includes 'fixing' each error message to include the specific value # which was invalid. # + # `allow_empty` option can be used instead of `allow_blank` for greater + # clarity and precision with enumerable values. If a validator includes + # this mixin, then an empty enumerable value will always be invalid if + # `allow_empty` is false or nil. + # module EnumerableBehavior def validate_each(record, attribute, value) - if value.respond_to?(:each) + return super unless value.respond_to?(:each) + if value.respond_to?(:empty?) && value.empty? + record.errors.add(attribute, "can't be empty") unless options[:allow_empty] + else value.each do |v| prev = record.errors[attribute].size rescue 0 super(record, attribute, v) messages = record.errors[attribute] if messages && messages.size > prev record.errors.add(attribute, fixed_message(v, messages.pop)) end end - else - super end end protected