I wonder if we should try validate before setting self.attrs so that if this throws an error we're not left with a messed up ``Contact`` instance?