2009-10-13 3 views
4

J'ai utilisé le plugin rails Authlogic. Tout ce que je l'utilise est d'avoir un administrateur qui peut modifier le site. Ce n'est pas un site où les gens inscrivent des comptes. Je vais finir par rendre la méthode create user restreinte par un utilisateur déjà connecté, mais bien sûr, lorsque je vide la base de données, je ne peux pas créer un utilisateur, donc je dois le préremplir d'une manière ou d'une autre. J'ai essayé juste de faire une migration pour mettre un vidage d'un utilisateur que j'ai créé, mais cela ne fonctionne pas et semble assez hacky. Quelle est la meilleure façon de gérer cela? C'est difficile parce que les mots de passe sont hachés, donc je pense que je dois en créer un et ensuite retirer les entrées hachées ...utilisateur prérempli administrateur dans la base de données avec le plugin rails authlogic

Répondre

7

Rails 2.3.4 ajoute une nouvelle fonctionnalité aux bases de données d'amorçage.

Vous pouvez ajouter dans votre graine dans le fichier db/seed.rb:

User.create(:username => "admin", :password => "notthis", :password_confirmation => "notthis", :email => "[email protected]") 

Insérer ensuite avec:

rake db:seed 

pour la production ou de test

RAILS_ENV="production" rake db:seed 
RAILS_ENV="test" rake db:seed 

Mon préféré fonction dans 2.3.4 jusqu'ici

0

L'approche la plus utilisée est d'avoir une tâche rake qui est exécutée après le déploiement pour héberger avec une base de données vide .

0

Ajouter une tâche Rake:

# Add whatever fields you validate in user model 
    # for me only username and password 
    desc 'Add Admin: rake add_admin username=some_admin password=some_pass' 
    task :add_admin => :environment do 
    User.create!(:username=> ENV["username"], :password=> ENV["password"],:password_confirmation => ENV["password"]) 
    end 
6

Si vous utilisez> = Rails 2.3.4 les nouvelles fonctionnalités incluent un fichier db/seeds.rb. C'est maintenant le fichier par défaut pour l'ensemencement des données.

Vous pouvez simplement utiliser vos modèles comme User.create(:login=>"admin", :etc => :etc) pour créer vos données.

Avec cette approche rake db:setup va également graver les données comme rake db:seed si vous avez déjà le DB.

Dans des projets plus anciens que j'ai parfois utilisé un appareil (remeber pour changer le mot de passe tout de suite) avec quelque chose comme users.yml:

admin: 
    id: 1 
    email: [email protected] 
    login: admin 
    crypted_password: a4a4e4809f0a285e76bb6b35f97c9323e912adca 
    salt: 7e8455432de1ab5f3fE0e724b1e71500a29ab5ca 
    created_at: <%= Time.now.to_s :db %> 
    updated_at: <%= Time.now.to_s :db %> 

rake db:fixtures:load FIXTURES=users 

Ou enfin comme les autres gars ont dit que vous avez la tâche de râteau option, espérons que cela aide.

Questions connexes