Voici mon schema.rbRails 4 Migration: mysql2 :: Erreur: données trop long pour la colonne '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
Je mets la limite fo chaîne pour la colonne "nom".
Puis, dans la console:
user = User.new(name:"1234567890",email:"[email protected]")
user.save!
Il a soulevé l'erreur:
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')
Mais, quand je suis passé à rails 3.
je l'ai trouvé tronqué la chaîne "" automatiquement, et inséré "" dans la base de données sans erreur.
Y at-il quelque chose à ce sujet a été retiré dans rails 4?
Dois-je ajouter quelques fonctions tronquées dans le modèle par moi-même? Merci!
Pour la dernière question, il peut dépendre de votre cas d'utilisation pour la création 'user'. Peut-être qu'il serait peut-être préférable d'ajouter un validateur pour vérifier la longueur sur ': name' et afficher une erreur à l'utilisateur s'il se termine trop longtemps? –
La validation est probablement la voie à suivre, car un utilisateur doit savoir que son nom ne peut pas dépasser 6 caractères. Sinon, ils pourraient être surpris quand ils entrent dans "Jonathan" mais quand ils regardent leur profil, leur nom est listé comme "Jonath". –
Merci, je comprends que le meilleur moyen est d'ajouter une validation. Mais je veux juste comprendre ce qui a été changé dans Rails 4, et j'ai certains modèles sont invisibles pour les utilisateurs, donc dans ce cas, la validation ne peut pas m'aider. – tzzzoz