ページを遷移する新規登録機能について考える

f:id:ryoutaku_jo:20190131020155p:plain

【結論】
・HTTPリクエストの特性上、ページを遷移すると、
 前のページに入力した情報は消えてしまう

・フォームに入力した情報を、遷移先のページでも
 保持したい場合は、セッションを利用する

Railsでは、一時的に情報を保持するsessionメソッドと
 長期的に保持するcookiesメソッドで、セッションを実装できる

【目次】


【本題】

ページを遷移する新規登録機能

現在チーム開発でメルカリの開発を行っていますが、
その中で、今ままで実装した事が無い機能が登場しました。

f:id:ryoutaku_jo:20190130232238p:plain

f:id:ryoutaku_jo:20190130232254p:plain

それが上記のページを遷移しながら、
新規登録を行う機能です

通常ページを遷移すると、入力していた情報は消えるので、
それを保持する必要があります。

但し、新規登録が完了していない段階で、データベースに
情報を登録してしまうと、もし最後まで登録を完了させなかった場合に
不都合が生じます。その為、別の方法でデータを保持する必要があります。

なお、この機能は、先輩方が実装に苦労されていた機能の一つでもあります。
かなり実装に時間が掛かる事が想定されたので、
早い目に実装方法を調べる事にしました。

セクションとは

HTTPのリクエストは、その特性上、
ブラウザのあるページから別のページに移動したときに、
前のページで入力した情報を保持しておく手段がありません。

その為、ページを移動しても入力したデータを保持する場合は、
セッション (Session) を別途設定します。

セッションとは、HTTPプロトコルより上の階層にあり、
HTTPの特性とは別に接続を確保できます。

セッションを実装する一般的な方法は、cookiesを使うことです。
cookiesとは、ユーザーのブラウザに保存される小さなテキストデータです。
cookiesは、あるページから別のページに移動した時にも破棄されないので、
ここにユーザーIDなどの情報を保存できます。

Railsではsessionメソッドを使ってこの機能を実現できます。
なお、sessionメソッドで作成されたセッションは自動で暗号化されますが、
ブラウザを閉じると破棄されます。

ブラウザを閉じても、長期的にデータを保持しておきたい場合
cookiesメソッドを利用します(ログイン状態を長期的に維持して利便性を上げたい等)

今回の場合は、ブラウザを閉じてもデータを保持しておくより、
消えた方が都合が良いので、sessionメソッドで実装を行います

セッションの実装方法

session[キー] = 値

railsdoc.com

値の部分に入力した情報が入るように記述すれば、
上記の記述だけで、セッションに入力情報が保持されます。
そして、最後にそのセッションに保持された情報を
データベースに登録するような記述を書けば良い事になります。

総括

概要だけ聞くと簡単そうなのだけど、
恐らく実際に実装するとなると難しいのだろう

今日は時間が無いので、明日以降で試して見たいと思います。

《今日の学習進捗》

チーム開発:5日目
入力フォームで生年月日をプルダウンで選択できるように
する機能が上手く実装できずに手こずる・・・


学習開始からの期間 :53日
今日までの合計時間:524h
今日までに到達すべき目標時間:484h
目標との解離:40h
「10,000時間」まで、

残り・・・「9476時間!」