私は周りを見回しましたが、これに関する情報は見つかりません。
既にユーザー モデルを構築し、移行を実行しました。ここで、データベース内の既存のユーザー テーブルに、電子メールと名前のみを持つ 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