【Rails開発メモ】ログイン・ログアウト機能を実装する手順

前回のユーザー登録の実装に引き続いて、今回はログイン機能を実装する手順について記録しておきます。毎度やることは同じなので、流れを掴めばサクッと実装できるのがRailsの良さであります。

  • 前提

    ログイン画面view(view/users/login_form.html.erb)の作成と、DBへのカラム追加を行います。Userテーブルは前回の時点で、名前とメアドカラムしか作成できていないので、パスワードカラムを追加するコマンドをぶち込んでいきます。

    加えてパスワードはちゃんと入力していただけるように、validationを追記しましょう。

     

    けんぞう

    カラムを追加するのは忘れやすいので、最初にテーブルを作成する段階でパスワードカラムも作っておくべきですな

    以上の前提の上でいじるポイントは3つのみです。

    • ポイント①:ルーティングを編集
    • ポイント②:login_form.html.erbでform_tagメソッドを使い、情報をname属性で拾う
    • ポイント③:controllerでloginアクションを追記する
  • STEP1
    ルーティング設定

    ルーティングで以下を追記しましょう。post を使うところが味噌

  • STEP2
    form_tagメソッドで送信先を指定し、name属性で情報を拾う

    login_form.html.erbにおいて、form_tagメソッドを用いて送信先を指定しつつ、name属性で情報を拾い上げます。入力されたメアド/パスワードを拾いあげています。

  • STEP3
    loginアクションを作成する

    最後にcontrollerにおいて、loginアクションを定義し、login_form.html.erbから拾ってきた情報を保存しつつ、リダイレクトの処理も行います。

ついでに僕が半日悩んだところも解説しておきます。form_tagメソッドを使って、以下のような記述をしてしまうと正常に動きません。

要するにformタグ内に、form_tagメソッドを書き込んでいる状態です。これだと、ログインを押下しても、以下のようなURLに遷移するだけで、form_tagメソッドが正常に働きません。


続いてログアウト機能もついでに実装しちゃいましょう。ログイン機能の3倍くらい簡単です。

  • STEP1
    ルーティング設定

    いつものようにルーティングを設定します。ここでも post で記述するのが味噌ですな

  • STEP2
    ログアウトアクションの設定

    次にログアウトアクションを設定しましょう。sessionで保存されているユーザーIDをぶっち切り、リダイレクト処理してあげればOKです。

     

以上です!本日もお疲れ様です!