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

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

Rails 2.3.4为种子数据库添加了一个新function。

您可以在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中最喜欢的function

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

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

使用这种方法rake db:setup也会为数据rake db:setup rake db:seed如果你已经拥有了数据库,那么将使用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任务选项,希望有所帮助。

最常用的方法是在部署到具有空数据库的主机之后运行rake任务。

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