I believe rails will not stop you creating a record with an empty
user_id. To be pedantic this is 'does not belong to any user' rather
than 'belongs to a non-existent user' (for a non-existent user the
user_id would contain a non-nil value for which there is no user). In
some applications this is a valid requirement. If you wish to prevent
this then include validates_presence_of as you have indicated.
From what I have been able to tell, validates_associated is meant for
when you are constructing two or more associated models at the same
time, and you don't want to save them unless both validate. So your
user validates would contain:
validates_associated :address
which would run all the validations for the address model. However, you
can't at the same time have a
validates_associated :user
line in the address model, because that will cause an infinite recursion
loop of validations.