require 'cgi' module ActiveMerchant class PostData < Hash class_attribute :required_fields, instance_writer: false self.required_fields = [] def []=(key, value) return if value.blank? && !required?(key) super end def to_post_data collect { |key, value| "#{key}=#{CGI.escape(value.to_s)}" }.join('&') end alias to_s to_post_data private def required?(key) required_fields.include?(key) end end end