前提・実現したいこと
Gmailのbodyから本文を取得し、DBに格納するコードを実装しています。
実際DBに格納することができたのですが、DBに入っているメールアドレスとGmail本文のメールアドレスが一致した場合はuser.save
しないという処理を作りたいです。
if DBとメールアドレスが一致する条件 next #trueの場合、次のループに移る else user.save(validate: false) end
↑みたいなコードを書きたいです。。
.present?や.match?メソッドを試してみましたがイマイチ実装のやり方がわかりません。。
誰かご教示いただけると助かります。。
該当のソースコード
require 'gmail' namespace :experiment_gmail do desc "実験Gmail" task :run => :environment do USERNAME='gmailのアドレス' PASSWORD='gmailのパスワード' gmail = Gmail.new(USERNAME,PASSWORD) gmail.inbox.emails(:unread, :from => "メールアドレス").map do |mail| mail.read! mail = mail.body.decoded.encode("UTF-8", mail.charset) mail_body = mail.gsub(///, '-') name_gmail = /氏名: (.+) (.+)/.match(mail_body) email_gmail = /メールアドレス:\s([\w\-._]+@[\w\-._]+.[A-Za-z]+)/.match(mail_body) area_gmail = /地域:\s(.+) .+/.match(mail_body) birth_gmail = /生年月日:\s(\d{4}-\d{2}-\d{2})/.match(mail_body) tel_gmail = /電話番号:\s(\d{11}|\d{10})/.match(mail_body) user = User.new user.name_sei = name_gmail[1] user.name_mei = name_gmail[2] user.email = email_gmail[1] if area_gmail[1] == "関東 " user.job_area_id = 1 end if area_gmail[1] == "関西 " user.job_area_id = 2 end user.birth = birth_gmail[1] user.tel = tel_gmail[1] #ここに分岐処理を入れたい# user.save(validate: false) end end end
補足情報(FW/ツールのバージョンなど)
ruby 2.4.1
rails 5.1.2
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/20 00:24 編集
2021/05/20 00:34
2021/05/20 00:41
2021/05/20 00:53
2021/05/20 03:59