TL;DR A simple rule of thumb is to use symbols every time you need internal identifiers. For Ruby < 2.2 only use symbols when they aren't generated dynamically, to avoid memory leaks. Full answer The only reason not to use them for identifiers that are generated dynamically is because of memory concerns. This question is very common because many programming languages don't have symbols, only strin