Gracias por informar, ponle un pr-welcome a esto, supongo que necesitamos cambiar ese find_by_name para que realice una búsqueda insensible a mayúsculas y minúsculas.
Dado que tenemos:
La solución sería:
TAG = Tag.where('lower(name) = ?', tag_name.downcase).first
A TagGroup le falta el índice, por lo que necesitaríamos agregarlo y luego hacer lo mismo allí.