I don't really understand the reason for this, could you expand a bit ?

Also I'm a bit worried about the performance impact of firing-up the regex engine on every single field.

BTW, IMHO writing it this way would make it easier to read:
`field = parent.nil? ? key.gsub() : (parent.gsub() + key.gsub())`