To your first question, Rails tried to enforce some constraints at the application level, but it was lacking. I worked in a large production system and for extra safeguards their were DB level foreign key constraints. They are kind of a pain to unwind and make changes, but they can save your butt if you accidentally delete something.
Second question: You can see this answer: http://stackoverflow.com/questions/507179/does-foreign-key-i...