module ActiveLdap::Associations::ClassMethods

def association_writer(name, &make_association)

def association_writer(name, &make_association)
  class_eval(<<-EOM, __FILE__, __LINE__ + 1)
    def #{name}=(new_value)
      association = defined?(@#{name}) ? @#{name} : nil
      association ||= __make_#{name}
      association.replace(new_value)
      @#{name} = new_value.nil? ? nil : association
      @#{name}
    end
  EOM
end