Rails 3.1.0.rc4

Cannot understand why does find_or_create method cannot accept model
instances instead of their ids:
Friendship.find_or_create_by_user_id_and_friend_id(User.first.id,
User.last.id) # works just fine
Friendship.find_or_create_by_user_id_and_friend_id(User.first,
User.last) # and even
Friendship.find_or_create_by_user_id_and_friend_id(User.first, Message.last)
rollbacks because of validation (user and friend cannot be the same person):
#<Friendship id: nil, user_id: 1, friend_id: 1, state: "pending",
created_at: nil, updated_at: nil>
So it interprets model instances as true or something like that. I've
stopped my search at assign_attributes method of ActiveRecord::Base
string send("#{k}=", v)
Is this correct behaviour?