Obrigado por relatar, coloque um pr-welcome nisso, acho que precisamos mudar esse find_by_name para fazer uma busca que não diferencie maiúsculas de minúsculas.
Dado que temos:
A correção seria:
TAG = Tag.where('lower(name) = ?', tag_name.downcase).first
TagGroup está sem o índice, então precisaríamos adicioná-lo e fazer o mesmo lá.