[eluser]OverZealous[/eluser]
[quote author="Jinkusu" date="1253729784"][...]how do you set up the table?[/quote]
If you are using a $has_one relationship, as in the example, I recommend simply adding $guardian_id to the users table. If you want to use a dedicated join table, then your example is 100% correct!
As for saving, you have an easy-to-make mistake. Because the relationship is a self-relationship, you always have to specify the relationship name when saving, like so:
$guardian->fullname = "John Handcock Snr.";
// Pick one of these three methods, based on your preference:
// NOTE: you don't need to use ->all unless you are saving more than one!
$guardian->save($student, 'student');
// OR
$guardian->save_student($student);
// OR
$guardian->save(array( 'student' => $student));
(Don't forget to set the type of user, if you decide to got that route.)
Only the last of the three save variants will allow you to save multiple, different models at the same time, like this: