comment faire une colonne unique dans les rails dossiers actifs autres que les id
class CreateUsers < ActiveRecord::Migration
def up
create_table :users do |t|
t.string "email", :unique=>true
J'ai essayé d'ajouter cette option unique pour faire de cet e-mail de l'id unique dans les rails modèle, mais sa ne marche pas alors comment puis-je faire de cet e-mail id uniques ?
ce qui vous fait penser que c'est de "ne travaillent pas"?
OriginalL'auteur asadkaramat | 2014-12-27
Vous devez vous connecter pour publier un commentaire.
La
unique
option doit être transmis à unadd_index
appel, non pas où vous définissez votre colonne.Mise à jour de la migration, définition comme suit:
Et si vous ne voulez pas autoriser les valeurs null alors utiliser
t.string :email, null: false
.OriginalL'auteur vee
Pourquoi mettre des restrictions sur le niveau de db, je pense que mettre une validation au niveau du modèle est plus que suffisant, et au moins à chaque fois que vous avez besoin de modifier ou de supprimer des restrictions vous ne trouvez pas votre auto à avoir besoin d'ajouter une nouvelle migration
Je comprends, mais quand vous avez un tableau avec des millions d'enregistrements et que vous souhaitez mettre à jour votre index, vous pourriez finir vers le haut de verrouillage de votre table pendant des heures, c'est pourquoi je pense que l'utilisation de code de contrôles au niveau de la est plus pratique.
Aussi, pas tous de la base de données est limitée à être accessibles via des Rails, de sorte que les contraintes sont les plus sûrs à mettre dans la base de données de niveau, de sorte que toute application qui peut écrire à la base de données ont le même ensemble de règles à suivre. L'utilisation des validations dans les Rails sont principalement (a) d'obtenir des messages d'erreur utiles au sein de l'application Rails, lui-même, et (b) pour activer l'utilisation de la
valid?
méthode, qui peut être très utile, et éventuellement (c) à l'appui d'autres spécifiques à l'application de la logique métier.OriginalL'auteur Mohammad AbuShady