我环顾四周,找不到任何有关此的信息。
我已经建立了我的用户模型并运行了我的迁移。现在,我必须使用仅包含电子邮件和姓名的 csv 文件中的数据填充数据库中现有的用户表。问题是用户还没有密码。所以我需要为所有用户创建一个临时密码。我正在使用devise进行身份验证,因此密码需要用于 Devise 的加密。
我该怎么做呢?
我环顾四周,找不到任何有关此的信息。
我已经建立了我的用户模型并运行了我的迁移。现在,我必须使用仅包含电子邮件和姓名的 csv 文件中的数据填充数据库中现有的用户表。问题是用户还没有密码。所以我需要为所有用户创建一个临时密码。我正在使用devise进行身份验证,因此密码需要用于 Devise 的加密。
我该怎么做呢?
您可以在 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
希望这会为您指明正确的方向!
您可以通过创建新用户模型来创建新的 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