module ActiveModel::Validations::Clusivity

def inclusion_method(enumerable)

or DateTime ranges.
endpoints, which is fast but is only accurate on Numeric, Time, Date,
Range#cover? uses the previous logic of comparing a value with the range
possible values in the range for equality, which is slower but more accurate.
After Ruby 2.2, Range#include? on non-number-or-time-ish ranges checks all
def inclusion_method(enumerable)
  if enumerable.is_a? Range
    case enumerable.first
    when Numeric, Time, DateTime, Date
      :cover?
    else
      :include?
    end
  else
    :include?
  end
end