Railsポートフォリオ作成【実装編】Userモデルを作る

昨日はYouTubeのせいで更新できませんでした。肉体労働者です。

今日もポートフォリオ作成を行っていくっ

前回

yukitoku-sw.hatenablog.com


前回Gitで管理する方法を学んで思ったんだが、ガントチャートを書き直す必要がある ざっくりとそのまま真似したのがいけなかった。。

f:id:yukitoku_sw:20191130202914p:plain

これの実装編の部分は、ブランチ名単位で予定を組むべきであった・・

明日作り直そう!!! うん! 今日ではない!!

よし、今日はUserモデルを作る

復習がてらRailsチュートリアルを非情に参考にする。

まず、GitHubをフル活用する

% git checkout -b modeling-users
Switched to a new branch 'modeling-users'

よしっ


全く一緒ではつまらないのでscaffoldを使ってみる

% rails g scaffold user name:string email:string
Running via Spring preloader in process 33992
      invoke  active_record
      create    db/migrate/20191207112407_create_users.rb
      create    app/models/user.rb
      invoke    test_unit
      create      test/models/user_test.rb
      create      test/fixtures/users.yml
      invoke  resource_route
       route    resources :users
      invoke  scaffold_controller
      create    app/controllers/users_controller.rb
      invoke    slim
      create      app/views/users
      create      app/views/users/index.html.slim
      create      app/views/users/edit.html.slim
      create      app/views/users/show.html.slim
      create      app/views/users/new.html.slim
      create      app/views/users/_form.html.slim
      invoke    test_unit
      create      test/controllers/users_controller_test.rb
      create      test/system/users_test.rb
      invoke    helper
      create      app/helpers/users_helper.rb
      invoke      test_unit
      invoke    jbuilder
      create      app/views/users/index.json.jbuilder
      create      app/views/users/show.json.jbuilder
      create      app/views/users/_user.json.jbuilder
      invoke  assets
      invoke    scss
      create      app/assets/stylesheets/users.scss
      invoke  scss

ものすごい大量に作成される!

これおすすめ
いつも忘れる「Railsのgenerateコマンド」の備忘録 - maeharinの日記


ここからは一気に作りたい気持ちを抑えて慎重に作っていくっ

最初はnameとemailだけのUserモデルを作り、testを書く→エラー→モデルを書く→テストが通る。という流れを意識して書く

簡単な検証だけ真似しようと思ったがrailsチュートリアルの内容は全部重要そう(当たり前か・・)だったので全て採用した!

ここでは "まだ" オリジナリティーなど必要ない。大丈夫


Userモデルにパスワードを追加する

$ rails generate migration add_password_digest_to_users password_digest:string

Userモデル作成時にまとめて作っても良かったが、あえて分けた。
次からはまとめて野郎!

「has_secure_password と gem 'bcrypt'」
この組み合わせでパスワードをハッシュ化する

ハッシュ化することでデータベースからパスワードが盗まれても、使えないようにすることができる。
盗まれないようにできるわけではない。。

bcryptの詳細
GitHubhttps://github.com/codahale/bcrypt-ruby

RubyGemshttps://rubygems.org/gems/bcrypt/versions/3.1.12


ひとまずこんなとこ

git にcommitしてmergeする (ルー)
コメントは丸パクリする!!

$ rails test
$ git add -A
$ git commit -m "Make a basic User model (including secure passwords)"

$ git checkout master
$ git merge modeling-users
$ git push


おっけいです