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