Difference between has_one and belongs_to

On the conceptual level, if your class A has a has_one relationship with class B then class A is the parent of class B hence your class B will have a belongs_to relationship with class A since it is the child of class A.

This is the reason (as Fred specified before), you will have a_id as foriegn key in your table b