che è un pattern errato, poiché find_by_name è case sensitive e create! non lo è [1], quindi genera un errore con ActiveRecord::RecordInvalid : Validation failed: Name has already been taken
Questo dovrebbe essere qualcosa come
tag = Tag.where('name ILIKE ?', tag_name).first || Tag.create!(name: tag_name)
perché validates :name, presence: true, uniqueness: { case_sensitive: false }↩︎
Grazie per la segnalazione, aggiungi un pr-welcome a questo, immagino che dobbiamo cambiare quel find_by_name per fare una ricerca non sensibile alle maiuscole.
Dato che abbiamo:
La correzione sarebbe:
TAG = Tag.where('lower(name) = ?', tag_name.downcase).first
A TagGroup manca l’indice, quindi dovremmo aggiungerlo e poi fare lo stesso lì.
No, è deselezionato. Mi dispiace, ora vedo che questo è importante.
Non sono sicuro di come tu stia cercando di riprodurre il problema, ma il CSV dovrebbe avere abc in minuscolo e force_lowercase_tags dovrebbe essere deselezionato.
Non riesco a riprodurre il problema con un tag da solo.
Ho commesso un piccolo errore nella mia OP:
Tag.find_by_name non fa distinzione tra maiuscole e minuscole (bene) e Tag.find_by(name: ) fa distinzione tra maiuscole e minuscole (male).
Questo perché David ha già risolto il problema per i tag 7 anni fa sovrascrivendo il metodo find_by_name.
Per TagGroup, quella correzione non è mai stata applicata.