# Problema con validazioni rails e utf-8

**URL:** <https://www.ruby-forum.com/t/problema-con-validazioni-rails-e-utf-8/220680>\
**Category:** IT\
**Created:** [June 16, 2012, 2:54pm UTC](https://www.ruby-forum.com/t/problema-con-validazioni-rails-e-utf-8/220680 "2012-06-16T14:54:50Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![aris](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/258eb7/32.png) [@aris](https://www.ruby-forum.com/u/aris)\
**Post date:** [June 16, 2012, 2:54pm UTC](https://www.ruby-forum.com/t/problema-con-validazioni-rails-e-utf-8/220680/1 "2012-06-16T14:54:50Z")

</div>

Ciao a tutti,  
sto avendo un problema con le validazioni di un modello e utf-8.  
Ho l’unicit di un campo name, per se scrivo, ad esempio, due modelli  
con name Joelle e Jolle, quando salvo il secondo fallisce la  
validazione perch secondo rails sono lo stesso nome.  
Il database mysql e le tabelle sono utf8 e in application.rb ho:

config.encoding = “UTF-8”

Se a mano inserisco i due nomi nel db non ci sono problemi e rails poi  
me li mostra correttamente, il problema proprio la validazione del  
modello.

Qualcuno sa come si risolve questo problema?

Grazie,  
Tommaso

---

<div class="post-metadata">

**Author:** ![Tommaso\_V](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/8e7dd6/32.png) [@Tommaso\_V](https://www.ruby-forum.com/u/Tommaso_V)\
**Post date:** [June 16, 2012, 5:24pm UTC](https://www.ruby-forum.com/t/problema-con-validazioni-rails-e-utf-8/220680/2 "2012-06-16T17:24:59Z")

</div>

Non ho la soluzione… Ma hai provato dalla console Rails a vedere  
l’encoding dei due valori che prova a salvare?

* * *

Riccardo

Il giorno 16/giu/2012, alle ore 14:54, Tommaso V.  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) ha scritto:

---

<div class="post-metadata">

**Author:** ![Tommaso\_V](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/8e7dd6/32.png) [@Tommaso\_V](https://www.ruby-forum.com/u/Tommaso_V)\
**Post date:** [June 16, 2012, 11:47pm UTC](https://www.ruby-forum.com/t/problema-con-validazioni-rails-e-utf-8/220680/3 "2012-06-16T23:47:04Z")

</div>

Il 16 giugno 2012 14:54, Tommaso V. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
ha scritto:

> mostra correttamente, il problema proprio la validazione del modello.  
> Ciao,

dicci di pi: che ruby? Che rails? Che sistema operativo? Come  
configurato mysql? Che valore c’ nella configurazione di mysql per  
default-character-set?

pietro

---

<div class="post-metadata">

**Author:** ![Tommaso\_V](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/8e7dd6/32.png) [@Tommaso\_V](https://www.ruby-forum.com/u/Tommaso_V)\
**Post date:** [June 17, 2012, 11:47am UTC](https://www.ruby-forum.com/t/problema-con-validazioni-rails-e-utf-8/220680/4 "2012-06-17T11:47:27Z")

</div>

Il 17 giugno 2012 10:17, Tommaso V. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
ha scritto:

> mi sa che mi sta sfuggendo qualcosa

Ciao,

ho appena provato con un’applicazione rails pulita, con:

class Person \< ActiveRecord::Base  
attr\_accessible :name, :surname

validates :name, :uniqueness =\> true  
end

E funziona senza problemi:

1.9.3p194 :001 \> Person.create :name =\> ‘Joelle’, :surname =\> ‘Smith’  
SQL (1.0ms) BEGIN  
Person Exists (0.4ms) SELECT 1 FROM `people` WHERE `people`.`name`  
= BINARY ‘Joelle’ LIMIT 1  
SQL (1.3ms) INSERT INTO `people` (`created_at`, `name`, `surname`,  
`updated_at`) VALUES (?, ?, ?, ?) [[“created\_at”, Sun, 17 Jun 2012  
09:32:50 UTC +00:00], [“name”, “Joelle”], [“surname”, “Smith”],  
[“updated\_at”, Sun, 17 Jun 2012 09:32:50 UTC +00:00]]  
(29.1ms) COMMIT  
=\> #\<Person id: 1, name: “Joelle”, surname: “Smith”, created\_at:  
“2012-06-17 09:32:50”, updated\_at: “2012-06-17 09:32:50”\>

1.9.3p194 :002 \> Person.create :name =\> ‘Jolle’, :surname =\> ‘Smith’  
SQL (0.1ms) BEGIN  
Person Exists (0.4ms) SELECT 1 FROM `people` WHERE `people`.`name`  
= BINARY ‘Jolle’ LIMIT 1  
SQL (0.7ms) INSERT INTO `people` (`created_at`, `name`, `surname`,  
`updated_at`) VALUES (?, ?, ?, ?) [[“created\_at”, Sun, 17 Jun 2012  
09:32:58 UTC +00:00], [“name”, “Jolle”], [“surname”, “Smith”],  
[“updated\_at”, Sun, 17 Jun 2012 09:32:58 UTC +00:00]]  
(25.0ms) COMMIT  
=\> #\<Person id: 2, name: “Jolle”, surname: “Smith”, created\_at:  
“2012-06-17 09:32:58”, updated\_at: “2012-06-17 09:32:58”\>

1.9.3p194 :003 \> Person.create :name =\> ‘Jolle’, :surname =\> ‘Smith’  
SQL (0.1ms) BEGIN  
Person Exists (0.4ms) SELECT 1 FROM `people` WHERE `people`.`name`  
= BINARY ‘Jolle’ LIMIT 1  
(0.1ms) ROLLBACK  
=\> #\<Person id: nil, name: “Jolle”, surname: “Smith”, created\_at:  
nil, updated\_at: nil\>

Guarda in development.log, come sono le query per verificare l’univocit.

pietro

---

<div class="post-metadata">

**Author:** ![Tommaso\_V](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/8e7dd6/32.png) [@Tommaso\_V](https://www.ruby-forum.com/u/Tommaso_V)\
**Post date:** [June 17, 2012, 10:18am UTC](https://www.ruby-forum.com/t/problema-con-validazioni-rails-e-utf-8/220680/5 "2012-06-17T10:18:04Z")

</div>

Il 16/06/12 23:46, Pietro G. ha scritto:

> > Se a mano inserisco i due nomi nel db non ci sono problemi e rails poi me li  
> > mostra correttamente, il problema proprio la validazione del modello.
> 
> Ciao,
> 
> dicci di pi: che ruby? Che rails? Che sistema operativo? Come  
> configurato mysql? Che valore c’ nella configurazione di mysql per  
> default-character-set?

ruby 1.9.3-p194  
rails 3.2.5  
Lo fa sia su mac che su linux, mysql installato senza configurazioni  
particolari in entrambi i s.o.  
Quando lancio rails console, la console utf-8  
mi verrebbe da pensare che il problema non sia mysql ma rails dato che i  
dati inseriti dalla console mysql funzionano, eppure dove ho controllato  
tutto utf-8, mi sa che mi sta sfuggendo qualcosa

---

<div class="post-metadata">

**Author:** ![Tommaso\_V](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/8e7dd6/32.png) [@Tommaso\_V](https://www.ruby-forum.com/u/Tommaso_V)\
**Post date:** [June 17, 2012, 3:05pm UTC](https://www.ruby-forum.com/t/problema-con-validazioni-rails-e-utf-8/220680/6 "2012-06-17T15:05:32Z")

</div>

Il 17/06/12 11:47, Pietro G. ha scritto:

> validates :name, :uniqueness =\> true  
> end
> 
> E funziona senza problemi:

Forse ho scoperto l’arcano, la validazione aveva l’opzione  
case\_sensitive a false:

validates\_uniqueness\_of :name, :case\_sensitive =\> false

senza l’opzione (di default true) funziona.  
Eppure da manuale non mi torna che debba funzionare cos:

:case\_sensitive - Looks for an exact match. Ignored by non-text columns  
(true by default).
