I realised the following:
user1 = User.create - creates a model with id 1 and age is 0
same_user = User.find(1)
same_user.update_attributes(:age => 18)
p same_user.age # prints out 18
p user1.age # prints out 0
Why doesnt the existing attribute obtain values from the database?
You need to reload your user. Because it's attributes are saved in memory while they are changed in the databse.
p same_user.age
p user1.reload.age