Named collection forward fetching

you've defined a class level method. You're calling it on an instance
of your class. This shouldn't even work.

say you've got a typo and it's actually defined as an instance method
and you're trying current_user.best_friend, you're going to get an
array of values returned. Of course the array has no 'interests'
method, since that's defined in your user model. I think what you may
want is something like the following:

def best_friend
  User.find :first, :conditions => ['designation = ?', 'Best Friend']

but.... looking back on your original method, it doesn't really make
sense to me. You've got:

def self.best_friend
  find :all, :conditions => "designation = 'Best Friend'"

so you want to find all the users who are designated as a 'Best
Friend'. But a best friend to whom? Say you've got 10 users and each
of them has 'Best Friend' set, so that means everyone is a best friend
to everyone else, which is probably not what you want.

I think what you want is either a self referential join, so each user
can have an arbitrary number of best friends, or give each user a
'best_friend_id' and use a has_one :best_friend, :class => 'User'
association if you only want each user to have a single best friend.