8
votes

Impossible de créer un compte degise à l'aide de Rake DB: graine pour rails 3.0

J'essaie de prélever tous les comptes de congise à l'avance en utilisant Rake DB: graine. Les données de tous les autres modèles semblent être insérées dans la base de données, mais pour une raison quelconque, aucune ligne n'est créée pour le modèle de personne qui utilise le concept. L'inscription à partir de l'interface Web fonctionne bien, mais je veux éviter de créer des comptes manuellement, c'est la raison pour laquelle j'utilise Rake DB: graine. J'ai copié Crypted_password, mot de passe_salt à partir d'un compte créé via une interface Web. S'il vous plaît laissez-moi savoir comment se déplacer cela? Merci beaucoup ..

people = Person.create(
                        :email => 'nnn@gmail.com',
                        :encrypted_password => '$2a$10$SyacAOhJQtVeTcTPYm.ROuFbhGMylfj4fLrK3NHyeRwfEokKp2NVW',
                        :password_salt => '$2a$10$SyacAOhJQtVeTcTPYm.ROu',
                        :first_name => "nnn",
                        :last_name => "yyy"
                       )


in routes.rb i have.

    devise_for :people


1 commentaires

BTW, cette méthode d'ensemencement des utilisateurs n'est pas très efficace, car pour chaque utilisateur concevoir des vérifications s'il existe un utilisateur avec cet e-mail déjà (une requête séparée) et les problèmes une requête d'insertion distincte - cela fonctionne vraiment lentement pour moi. Je suis actuellement à la recherche de meilleures solutions. J'ai besoin d'environ 100 000 utilisations semées pour les tests ...


3 Réponses :


24
votes

J'ai fait cela en utilisant le congé dans le passé. Je n'ai pas essayé de définir le mot de passe crypté et le sel de cette façon. Je viens de définir le mot de passe et la confirmation de quelque chose comme ceci (je n'ai pas de projet pratique): xxx

essayez ça.


0 commentaires

4
votes

Très probablement La méthode "Créer" échoue tranquillement en raison de la validation du modèle et renvoie donc de faux. Vous auriez étendu les erreurs si vous avez utilisé "Créer!" méthode à la place ( avec exclamation ) - Cette méthode soulève l'exception si la validation échoue.

La raison probable de l'échec de la validation dans votre cas est que ( par défaut par défaut pour le développement ) la longueur minimale du mot de passe est de 6 caractères et que vous n'allageez pas du tout mot de passe.


0 commentaires

0
votes

Si vous ne voulez pas de duplicats lors de l'exécution de Rake DB: graine plusieurs fois:

User.create(
  email: email,
  password: password,
  password_confirmation: password
) unless User.where(email: email).exists?


0 commentaires