csvからインポートしたもので、Userモデルにすでに登録しているレコードと比較して当てはまるものを@update_usersに代入したいです。
@update_userにうまく入るかどうか確かめるために、
logger.info "update値を見たい #{@update_user.inspect}"
と記述して確かめているのですが、@update_userには値は入っていませんでした。
find_byの使い方なのでしょうか?
controller
1def import 2 csv_users = [] 3 CSV.foreach(params[:file], headers: true, encoding: 'Shift_JIS:UTF-8') do |row| 4 values = row.to_h 5 csv_users << User.new( 6 id: values["id"], 7 name: values["name"], 8 age: values["age"], 9 note: values["note"], 10 text: values["text"], 11 number: values["number"], 12 ) 13 end 14 csv_users.each do |i| 15###ここです!! 16 @update_user = User.find_by('name = ? AND text = ? AND number = ?', i.name, i.text, i.number) 17 if @update_user.present? 18 @update_user.update(name: i.note) 19 else 20 @new_users = User.create( 21 name: i.name, 22 age: i.age, 23 note: i.note, 24 text: i.text, 25 number: i.number, 26 ) 27 end 28 29 end 30
回答1件
あなたの回答
tips
プレビュー