User#guest attribute

disables checking for email and password when set to true. however, it
is not saved to the database, so it will not be remembered the next time
this user is loaded
allow null emails

this removes the default empty email address, and allows emails that are
null to be saved to the database. this way, guest users don't have to
have an email address.
create a guest user

setting the guest attribute to true means that it will be allowed to be
saved, even without an email address. it won't be possible to update
this user without adding an email address, though. if you need to
update guest users, you will want to add a guest column to the users
table so that the "guest" status will be saved.
don't create the goal yet!

goals.create will save immediately. goals.new will make a goal but not
save it, so that we can try to save it on the next line.
un-indent private

that makes the indenting for everything else line up nicely. not every
rubyist does it this way, but I hugely prefer it because I want all my
def lines to line up :P