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 に答える