Ruby on Rails開発のインターン (Day 5)

こんにちは、皆さん!

勤務開始時は少し眠い感じ。ちゃんと起きてられるといいが...


  • トピック:
  1. reCAPTCHAとは?
  2. RailsでreCAPTCHAを実行する


  • 疑問:


  • 問題:


  • 学習した内容:
  1. reCAPTCHAの実行


  • 今後やりたいこと:
  1. reCAPTCHAを自分のプロジェクトにも追加する
  2. reCAPTCHAのチュートリアル動画を作る


  • リソース:
  1. Adding reCAPTCHA To Your Rails Application - RichOnRails.com


reCAPTCHAとは?

reCAPTCHAとは下記の写真のロボット対策のセキュリティです。通常フォーム記入の画面で使われます。
f:id:Programming_Shop:20180713093204p:plain


これはグーグルが提供しているAPIであり、登録して必要なキーさえ手に入れたら、自分自身のアプリケーションで使うことができます!
登録はこちら→reCAPTCHA: Easy on Humans, Hard on Bots


RailsでreCAPTCHAを実行する

*この記事はデータベースにデータを保存する前にreCAPTCHAテストをすることを前提としてます*
いつも通り、最初の作業はgemをGemfileに追加

gem 'recaptcha', require: 'recaptcha/rails'

そしたら、reCAPTCHAのサイトキーとシークレットキーを保存するためにconfig/initializers/recaptcha.rbを作成し、次の内容を中に入れる

Recaptcha.configure do |config|
  config.site_key  = Rails.application.secrets.recaptcha_site_key
  config.secret_key = Rails.application.secrets.recaptcha_secret_key
end

2つのキーを環境変数として設定するのを忘れずに!!
環境変数の設定の仕方については→ Ruby on Rails環境変数の設定 - Programming_Shopの日記


下記の内容をreCAPTCHAを使いたいところに入れましょう

<%= recaptcha_tags %>

そしたら、create関数に下記のコードを入れて、ユーザーがreCAPTCHAの質問に正解できたか確認します (Userを作るためのフォームがある前提で)

verify_recaptcha(model: @user)

ユーザーが正解できたのなら、true、間違えたのなら、falseを返してきます
ということで、下記のようによく利用されます

  def create
    @user = User.new(user_params)
    if !verify_recaptcha(model: @user) || !@user.save
      render "new"
    end
  end

このコードですと、ユーザーがreCAPTCHA間違えた場合とフォームを確実に埋めることができなかった時の両方の場合ともフォームに戻ってくれます。

まとめ

今日の仕事は楽しかった感じがします。controllerのためのRspecコードをどうやって書くかでだいぶ悩んでしまって少し時間を食いました。結局答えは出なかったので、また明日かな(笑)
いづれにいろ、今日はバグを一つ直し、reCAPTCHAを実行することもできたのですごいいい感じ!!
明日どんな新しいことに出会えるか楽しみです☺


ご精読ありがとうございました。では、また次回まで✌




Day 6はこちら↓↓
programming-shop.hatenablog.com


Day 4はこちら↓↓
programming-shop.hatenablog.com