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!