help modifying validates_inclusion_of to accept a proc

Hi all,

I'm hoping to get some help with validates_inclusion_of. I'm trying to modify the method so that it accepts a symbol or Proc, so that the list of valid values is computed dynamically at the time of validation. However, I'm starting to think this might not even be possible, given the way validations are implemented. It looks as though when I pass in a proc, it is called just once and the value stored. Can anyone advise on how modify this so that the proc is actually called upon validation? I appreciate any tips.

This is what I have so far:

module ActiveRecord   module Validations     module ClassMethods

      def validates_inclusion_of(*attr_names)         configuration = { :message => ActiveRecord::Errors.default_error_messages[:inclusion], :on => :save }         configuration.update(attr_names.extract_options!)

        enum = configuration[:in] || configuration[:within]

        # allow :in parameter to be a symbol or proc         if enum.is_a? Symbol then           testenum = send(enum)         elsif enum.is_a? Proc then           testenum = enum.call         else           testenum = enum         end         raise(ArgumentError, "An object with the method include? is required must be supplied as the :in option of the configuration hash") unless testenum.respond_to?("include?")

        validates_each(attr_names, configuration) do |record, attr_name, value|           # NPG package the value in an array if necessary           if !value.respond_to? :each then             value = [ value ] #           end           # NPG allow :in parameter to be a proc           if enum.is_a? Symbol then             enum = send(enum)           end           if enum.is_a? Proc then             enum = enum.call           end

          value.each do |val| # iterate over each value in the field             record.errors.add(attr_name, configuration[:message] % val) unless enum.include?(val)           end         end       end

    end   end end