2009-10-13 150 views
4

我一直在使用Authlogic rails插件。真的,我所使用的只有一個管理員用戶可以編輯該網站。這不是人們註冊帳戶的網站。我將最終使得已經登錄的用戶限制創建用戶方法,但是當我清除數據庫時,我無法創建用戶,因此我必須以某種方式預先填充它。我試圖做一個遷移,把我創建的用戶轉儲,但這不起作用,似乎很hacky。處理這個問題的最好方法是什麼?這是棘手的,因爲密碼被哈希,所以我覺得我必須創建一個,然後拉出哈希條目...使用authlogic rails插件預填充admin用戶數據庫

回答

7

Rails 2.3.4爲種子數據庫添加了一項新功能。

您可以在種子加入DB/seed.rb文件:

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

然後將其插入:

rake db:seed 

生產或測試

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

我最喜歡的功能到目前爲止2.3.4

0

最常用的方法是有一個rake任務後運行部署到主機與空數據庫。

0

添加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

> = 2.3.4的Rails的新特性包括一個DB/seeds.rb文件。這現在是用於種子數據的默認文件。

在那裏你可以簡單地使用你的模型,如User.create(:login=>"admin", :etc => :etc)來創建你的數據。

使用這種方法,rake db:setup也將按照rake db:seed種子數據,如果您已經有數據庫。

在舊項目,我有時用一個固定的東西,如users.yml裏(remeber更改密碼直線距離):

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 

終於還是因爲其他人說你有rake任務選項,希望有所幫助。