belongs_to not working as expected

I'm using ActiveRecord 2.3.2. I have a class with a belongs_to association like this:

  class Foo < ActiveRecord::Base     belongs_to :bar   end

It is valid for bar to be nil (thus, in the database, foos.bar_id can be null). However, if I execute the following I get an error:

  foo = Foo.new   foo.bar # => nil   foo.save!   foo.bar # expect nil but get error

The full error message is, "ActiveRecord::RecordNotFound (Couldn't find Bar without an ID)". Tracing the code I see that ActiveRecord::Base.find_from_ids(ids, options) is being called by passing an array containing a single, nil, element for the ids argument. Here is the method:

  def find_from_ids(ids, options)     expects_array = ids.first.kind_of?(Array)     return ids.first if expects_array && ids.first.empty?

    ids = ids.flatten.compact.uniq

    case ids.size       when 0         raise RecordNotFound, "Couldn't find #{name} without an ID"       when 1         result = find_one(ids.first, options)         expects_array ? [ result ] : result       else         find_some(ids, options)     end   end

Without delving further to assess other consequences, it seems to me that either nil should be returned when ids.size == 0 or the line "ids = ids.flatten.compact.uniq" should be replaced with:

  ids = ids.flatten.uniq   return nil if ids.length == 1 && ids.first.nil?   ids.compact!

Any thoughts gratefully received!

Thanks,

Chris.