Valid Ruby (the only valid line of code in this post)
before_validation(on: :create) { contact.email ||= email }  
Drop braces and use a stabby proc
before_validation(on: :create) -> contact.email ||= email  
Drop parentheses around the hash arguments
before_validation on: :create -> contact.email ||= email  
Shorthand for { :symbol => :symbol } key/value pairs
before_validation on:create -> contact.email ||= email  
Maybe drop the getter/setter name duplication somehow
before_validation on:create -> contact:||= email  
before_validation on:create -> contact .= email  

That last one seems a little weird but would be an interesting syntax. I really like the condensed hash arguments syntax though. Maybe one day we'll see stuff like this in Ruby!