使用authlogic rails插件在数据库中预填充管理员用户

V_H*_*V_H 4 ruby authentication ruby-on-rails admin authlogic

我一直在使用Authlogic rails插件.我真正使用的是拥有一个可以编辑网站的管理员用户.它不是人们注册帐户的网站.我将最终使创建用户方法受到已登录用户的限制,但当然,当我清除数据库时我无法创建用户,因此我必须以某种方式预先填充它.我试图进行迁移以放置我创建的用户的转储,但这不起作用,看起来非常h​​acky.处理这个问题的最佳方法是什么?这很麻烦,因为密码被哈希,所以我觉得我必须创建一个然后拉出哈希条目...

nka*_*sis 7

Rails 2.3.4为种子数据库添加了一个新功能.

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

User.create(:username => "admin", :password => "notthis", :password_confirmation => "notthis", :email => "admin@example.com")
Run Code Online (Sandbox Code Playgroud)

然后插入:

rake db:seed
Run Code Online (Sandbox Code Playgroud)

用于生产或测试

RAILS_ENV="production" rake db:seed  
RAILS_ENV="test" rake db:seed
Run Code Online (Sandbox Code Playgroud)

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


tsd*_*own 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
Run Code Online (Sandbox Code Playgroud)

或者最后,正如其他人说你有rake任务选项,希望有所帮助.