modelで作成したvalidationがうまくいきません
csvから取り出したデータに対し、validateをかけたいと思っています。
一旦全てのcsv_userに、csv_validでvalidationをかけて、その後にエラーメッセージでvalidateされたレコードを表示させたいです。
どのような方法がありますでしょうか?
csvの何行目が誤っています。のような表示はできるものなのでしょうか??
該当のソースコード
controller
1 def csv_import 2 @csv_users = User.import_list_from_csv(params[:file]) 3 @csv_users.each do |csv_user| 4 if csv_user.csv_valid 5 csv_user.kind_number = NKF.nkf('-w -Z1 -Z4 -x', csv_user.kind_number) 6 else 7####################ここに書くと思うのですが。。 8 end 9 end 10 redirect_to users_url 11 end
model
1 def csv_valid 2 result = true 3 if self.name.blank? 4 result = false 5 end 6 if self.age.blank? 7 result = false 8 end 9 if self.kind_number.blank? 10 result = false 11 else 12 if self.note.length > 10 13 result = false 14 end 15 end 16 return result 17 end 18 19 class << self 20 def import_list_from_csv(file) 21 csv_users = [] 22 CSV.foreach(file.path, encoding: 'Shift_JIS:UTF-8', headers: true, converters: :integer) do |row| 23 values = row.to_h 24 csv_users << User.new( 25 id: values["id"], 26 name: values["name"], 27 age: values["age"], 28 brithday: values["brithday"], 29 note: values["note"] 30 kind_number: values["kind_number"] 31 ) 32 end 33 csv_users 34 end 35 end
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
>csvの何行目が誤っています。のような表示はできるものなのでしょうか??
「そう作ればできる」という回答になりますがよろしいでしょうか。
内容ループしてるなら幾らでもやりようがあるでしょうし…。フォームのバリデーションと考え方は同じでしょうし。