module ActiveRecord module Validations module ClassMethods def validates_association_of(*attr_names) options = { :message => "is not valid", :on => :save} options.update(attr_names.pop) if attr_names.last.is_a?(Hash) raise ConfigurationError, ":allow_nil is not supported" if options.has_key?(:allow_nil) attr_names.each do |attr_name| reflection = reflect_on_association(attr_name) raise ConfigurationError, "validates_association_of only supports 'belongs_to' associations" unless reflection.macro == :belongs_to end validates_each(attr_names, options) do |record, attr_name, value| reflection = reflect_on_association(attr_name) record.errors.add(reflection.primary_key_name, options[:message]) if value.nil? end end end end end