4

我一直在使用 Authlogic rails 插件。实际上,我使用它的目的只是让一个可以编辑站点的管理员用户。它不是人们注册帐户的网站。我将最终使创建用户方法受到已登录用户的限制,但是当然,当我清除数据库时,我无法创建用户,所以我必须以某种方式预先填充它。我尝试进行迁移以转储我创建的用户,但这不起作用并且看起来很hacky。处理这个问题的最佳方法是什么?由于密码被散列,这很棘手,所以我觉得我必须创建一个然后提取散列条目......

4

4 回答 4

7

Rails 2.3.4 为种子数据库添加了一项新功能。

您可以在 db/seed.rb 文件中添加种子:

User.create(:username => "admin", :password => "notthis", :password_confirmation => "notthis", :email => "admin@example.com")

然后插入它:

rake db:seed

用于生产或测试

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

到目前为止我最喜欢的 2.3.4 功能

于 2009-10-14T05:10:43.067 回答
6

如果您使用 >= Rails 2.3.4,则新功能包括一个 db/seeds.rb 文件。现在这是播种数据的默认文件。

在那里你可以简单地使用你的模型User.create(:login=>"admin", :etc => :etc)来创建你的数据。

如果您已经拥有数据库,使用这种方法rake db:setup也将播种数据。rake db:seed

在较旧的项目中,我有时会使用带有 users.yml 之类的固定装置(记住立即更改密码):

admin:
  id: 1
  email: admin@domain.com
  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 任务选项,希望对您有所帮助。

于 2009-10-13T21:38:42.257 回答
0

最常用的方法是在部署后运行一个 rake 任务以托管空数据库。

于 2009-10-13T18:40:06.603 回答
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
于 2009-10-13T19:12:54.960 回答