Question

Question: Comment puis-je obtenir la conception du modèle ci-dessous à l'aide ActiveAdmin et 2 Devise

J'ai mis en place avec succès active_admin avec un modèle existant User pour bootstrapping il.

Je supposais ce moyen de conception de modèle ( "AdminUsers Have gérer les utilisateurs").

Voici mon modèle actuel mis en place:

 irb(main):003:0> User.column_names
 => ["id", "created_at", "updated_at", "avatar", "name"]
 irb(main):004:0> AdminUser.column_names
 => ["id", "email", "encrypted_password", "reset_password_token",    "reset_password_sent_at", "remember_created_at", "sign_in_count", "current_sign_in_at", "last_sign_in_at", "current_sign_in_ip", "last_sign_in_ip", "created_at", "updated_at"]

Maintenant, je voudrais ajouter un peu authenticaton pour mon modèle utilisateur. Cependant, je ne peux pas migrer les résultats de rails generate devise User sans ce conflit:

 ==  AddDeviseToUsers: migrating ===============================================
 -- change_table(:users)
 -> 0.7201s
 -- add_index(:users, :email, {:unique=>true})
rake aborted!
An error has occurred, this and all later migrations canceled:

PG::Error: ERROR:  could not create unique index "index_users_on_email"
DETAIL:  Key (email)=() is duplicated.
: CREATE UNIQUE INDEX "index_users_on_email" ON "users" ("email")

Tasks: TOP => db:migrate

Maintenant, je ne dispose pas d'un attribut email dans mon modèle actuel de l'utilisateur, mais AdminUser fait. Alors, quand essaie de créer Concevoir l'attribut mail dans User Je soupçonne que c'est pourquoi je reçois cette erreur. Mais pourquoi? Ils sont en différents modèles?

Toute aide par exemple expériences, messages ou tutoriels seraient appréciés (ainsi qu'une réponse)

NOTE J'ai essayé la solution trouvée sur le wiki et Devise , sans succès sur la migration.

Était-ce utile?

La solution

Le problème est dans la création de l'indice. Puisque vous changez la table, je suppose que vous avez déjà des documents qu'il contient - en essayant d'ajouter une colonne e-mail, puis ajouter un index unique sur elle ne fonctionnera pas parce que la colonne ne sera pas des valeurs uniques encore. Ajoute un index legs sur la colonne de courrier électronique, car il est le champ de connexion primaire - si vous avez un autre domaine pour la connexion (par exemple, le nom d'utilisateur), puis ajoutez l'index sur cette place. Si vous envisagez de commencer à utiliser le courrier électronique pour la connexion, puis supprimez l'index pour l'instant et l'ajouter une fois que vous avez rempli la colonne e-mail avec des valeurs uniques.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top