Ecco la mia schema.rbRails 4 Migrazione: Mysql2 :: Errore: dati troppo lungo per la colonna 'xxxx'
create_table "users", force: true do |t|
t.string "name", limit: 6
t.string "email"
t.datetime "created_at"
t.datetime "updated_at"
end
ho impostato il limite fo stringa per la colonna "nome".
Poi, in console:
user = User.new(name:"1234567890",email:"[email protected]")
user.save!
ha sollevato l'errore:
ActiveRecord::StatementInvalid: Mysql2::Error: Data too long for column 'name' at row 1: INSERT INTO `users` (`created_at`, `email`, `name`, `updated_at`) VALUES ('2014-06-19 15:08:15', '[email protected]', '1234567890', '2014-06-19 15:08:15')
Ma, quando sono passato a rotaie 3.
l'ho trovato troncato la stringa "" automaticamente e inserito "" in base di dati senza errori.
È stato rimosso qualcosa nelle guide ?
Devo aggiungere alcune funzioni troncate nel modello da solo? Grazie!
Per l'ultima domanda, può dipendere dal vostro caso d'uso per la creazione 'user'. Forse potrebbe essere meglio aggiungere un validatore per verificare la lunghezza su ': name' e mostrare un errore all'utente se finisce troppo a lungo? –
La convalida è probabilmente la strada da percorrere, perché un utente dovrebbe sapere che il suo nome non può essere più lungo di 6 caratteri. Altrimenti potrebbero essere sorpresi quando entrano in "Jonathan", ma quando guardano il loro profilo il loro nome è elencato come "Jonath". –
Grazie, ho capito che il modo migliore è aggiungere un po 'di validazione. Ma voglio solo capire cosa è cambiato in Rails 4, e alcuni modelli sono invisibili agli utenti, quindi in questo caso la convalida non può aiutarmi. – tzzzoz