0

我环顾四周,找不到任何有关此的信息。

我已经建立了我的用户模型并运行了我的迁移。现在,我必须使用仅包含电子邮件和姓名的 csv 文件中的数据填充数据库中现有的用户表。问题是用户还没有密码。所以我需要为所有用户创建一个临时密码。我正在使用devise进行身份验证,因此密码需要用于 Devise 的加密。

我该怎么做呢?

4

2 回答 2

2

您可以在 Ruby 中解析 CSV 文件,遍历所有记录并使用临时密码创建用户。

您可以使用 ruby​​ 的 CSV 类读取 csv 文件:

CSV.open('my_file.csv','r') do |row|
  #do something with the row, e.g. row['first_name']
end

从 CSV 中提取字段后,您可以使用以下内容生成临时密码:

o =  [('A'..'Z'), (1 .. 9)].map{|i| i.to_a}.flatten;  
temp_password = (0..8).map{ o[rand(o.length)]  }.join;

这将生成一个包含大写字母和数字 1-9 的密码,长度为 8 个字符(我使用它在我当前的项目中生成邀请码)

所以把它们放在一起,你可以做这样的事情:

CSV.open('my_file.csv','r') do |row|
  email = row['email']
  name = row['name']
  #This would be better in a seperate method
  o =  [('A'..'Z'), (1 .. 9)].map{|i| i.to_a}.flatten;  
  temp_password = (0..8).map{ o[rand(o.length)]  }.join;
  User.create(:email => email, :password => temp_password, :password_confirmation => temp_password)
end

希望这会为您指明正确的方向!

于 2012-10-20T06:18:00.667 回答
0

您可以通过创建新用户模型来创建新的 Devise 用户(请参阅https://github.com/plataformatec/devise/wiki/How-To:-Manage-users-through-a-CRUD-interface

user = User.new(:email => 'test@example.com', :password => 'password', :password_confirmation => 'password')
user.save

参考:https ://stackoverflow.com/a/4660842/445908

于 2012-10-20T05:55:44.570 回答