LoginSignup
2
2

More than 5 years have passed since last update.

Railsのdeviseを入門してみる

Last updated at Posted at 2018-09-20

0 説明

ユーザー登録、ログイン、承認、ログイン状態維持などのウェブアプリケーションには必須である機能を簡単に実装できるdeviseを触ってみたいと思います。最近Railsを勉強し始めたばかりなので、技術的なこと詳しく書けません。一通りのフローや、どういう理屈でdeviseが動いているのか、理解だけするための記事です。

1 railsのプロジェクトを作る

下記のコマンドでデスクトップにdevise_testというプロジェクトが作られます。

$ pwd
/Users/hujisawa/desktop
$ rails new devise_test

2 Gemfileに以下を追記

deviseを使うためにgemファイルにdeviseを追加しましょう

gem 'devise'

んで、そのあとにbundle installを実行してライブラリを使えるようにします

bundle install

3 設定ファイルを追加しましょう

下記のコマンドでdevise設定ファイルを作ります。必須です。詳しくはここを参照お願いします

rails g devise:install

4 モデルとマイグレーションを作る

下記のコマンドでdeviseで使われる、モデルやマイグレーションが生成されます。下記のコマンドではUserモデルと、そのためのマイグレーションが作られます。必須です。詳しくはここを参照お願いします

rails g devise User

モジュール追加の編集が終わったらマイグレーションを実行します

rake db:migrate

5 やってみる

railsのウェブサーバーを起動して

rails s -p 3335

下記のurlにアクセスすればデフォルトの登録画面が表示されます

http://localhost:3335/users/sign_up

Screen Shot 2018-09-20 at 15.13.20.png

6 ユーザー登録が完了した

Screen Shot 2018-09-20 at 15.13.26.png

ユーザー登録をしてみたら、実際にユーザーがdbに登録されているのか確認してみましょう

アプリのディレクトリに移動して

$ cd /Users/hujisawa/Desktop/devise_test 
$ pwd
/Users/hujisawa/Desktop/devise_test

railsのdbのコンソールを起動して

$ rails dbconsole

既存テーブルを確認してユーザーテーブルが生成されていることを確認して

.tables

selectしてみて、登録されているか確認

select * from users;
//登録されてる
1|a@gmail.com|$2a$11$hD04NGAGdNzsLvyRxRFxBuIwrxn.....

もう一回 http://localhost:3335/users/sign_up にアクセスしてみればわかると思いますが、http://localhost:3335/にリダイレクトされますね。これは、 http://localhost:3335/users/sign_upにアクセスされた時、もう既にユーザーが登録されていて、今は承認済みで、その状態が維持されているので、その場合はルートディレクトリに、リダイレクトされます。

解説

この時点で、ユーザーの登録、そして承認という簡単な流れができました。もし、承認済みユーザーのみアクセスできるページ、承認されてないユーザーでも見れるページ、などを分けたり、どのくらいアクセスしてなくても承認されている時間を維持するか(クッキー的な)を決めたり、フォームのバリデーションをしたり、もっとviewを工夫したり、そういうことをしたい場合は、参考に上げたurlを参考に、コントローラーや、ビューや、ルートをいじってください。デフォルトの機能を実装するために、コントローラーや、ビューや、ルートはいらないし、必要もないですが、もっと機能を足して、実用化するには、下記のurlを参考に、コントローラーや、ビューや、モデルをもっといじってください。

参考

【Rails備忘録】deviseまとめ

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2