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
on 2012-06-16 14:54
on 2012-06-16 17:24
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 Visconti <tommaso.visconti@gmail.com> ha scritto:
on 2012-06-16 23:47
Il 16 giugno 2012 14:54, Tommaso Visconti <tommaso.visconti@gmail.com>
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
on 2012-06-17 10:18
Il 16/06/12 23:46, Pietro Giorgianni 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
on 2012-06-17 11:47
Il 17 giugno 2012 10:17, Tommaso Visconti <tommaso.visconti@gmail.com>
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
on 2012-06-17 15:05
Il 17/06/12 11:47, Pietro Giorgianni 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).
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.