Railsチュートリアル第6章(2周目)ユーザー名は50文字まで
Railsチュートリアル第6章ユーザーのモデルを作成するについて、
つまづいたことや実行コマンドをまとめました。
ユーザーを新規作成するときのルールだったり、
パスワードをハッシュ化したり、重要なところです。
目次
今回の目標:第6章をざっくり行う
公式はこちら→ 第6章ユーザーのモデルを作成する
理解度は50%を目安にしているので、演習や細かいところはすっ飛ばします。
約1時間で終わらせます。
必要なもの
・AWS (Cloud9)アカウント
・Bitbucket アカウント
(GitHubでも良いが、今回は忠実に進めていく)
・Heroku アカウント
行ったこと
Userモデルを生成する
6.1.1 データベースの移行 にて、
1 |
$ rails generate model User name:string email:string |
マイグレーションファイルを作成しました。
DB Browser for SQLiteを使用
図 6.6で紹介されている、
「DB Browser for SQLite」というツールをダウンロードしました。
ユーザーオブジェクトについて確認
サンドボックスで、ユーザーオブジェクトを作成しました。
1 2 |
$ rails console --sandbox >> user = User.new(name: "Michael Hartl", email: "mhartl@example.com") |
検索、更新、検証も出来るんですね。
また、ユーザー名は50文字まで、
メールアドレスも255文字まで、などの制限もしました。
同じメールアドレスでは登録できないとか、
パスワードはハッシュ化するとか、とても重要なところですね。
ユーザーの作成
データベースに新規作成しました。
これまではサンドボックスだったので、
本番では記念の一人目です。こんちゃ、Michael!
つまずいたこと
$ rails test:modelsでエラー
リスト6.22 rails test:modelsでエラーになりました。
1) Error:
UserTest#test_email_should_not_be_too_long:
SyntaxError: /home/ec2-user/environment/sample_app/app/models/user.rb:7: syntax error, unexpected ‘:’, expecting end
format: { with: VALID_EMAIL_REGEX }
^
ファイル内がエラーっぽい。
よく見たら、直前に追記したファイル
(sample_app/app/models/user.rb)の、
6行目「カンマ」が抜けてました。
そうよね、「ここ、続きだからカンマ入れてね」とまでは
言ってくれないよね〜。
DB Browser for SQLite
窓の杜からダウンロードして、失敗しました。
公式からだと成功しました。
実行コマンド
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
$ rails generate model User name:string email:string $ rails db:migrate $ rails console --sandbox >> User.new >> user = User.new(name: "Michael Hartl", email: "mhartl@example.com") >> user.valid? >> user.save >> user >> User.find(1) >> User.first >> User.create(name: "A Nother", email: "another@example.org") >> user.save >> User.all >> user.update_attribute(:name, "El Duderino") >> user.name $ rails test:models $ rails test:models $ rails console --sandbox >> user = User.new(name: "", email: "mhartl@example.com") >> user.valid? $ rails test:models $ rails test $ rails test $ rails test:models $ rails console --sandbox >> user = User.create(name: "Example User", email: "user@example.com") >> user.email.upcase >> duplicate_user = user.dup >> duplicate_user.email = user.email.upcase >> duplicate_user.valid? $ rails test $ rails generate migration add_index_to_users_email $ rails db:migrate $ rails generate migration add_password_digest_to_users password_digest:string $ rails db:migrate $ bundle install $ rails test $ rails test:models $ rails console >> User.create(name: "Michael Hartl", email: "mhartl@example.com", ?> password: "foobar", password_confirmation: "foobar") >> user = User.find_by(email: "mhartl@example.com") >> user.password_digest >> user.authenticate("not_the_right_password") >> user.authenticate("foobar") $ git commit -am "Make a basic User model (including secure passwords)" $ git push |
まとめ
第6章(ユーザーのモデルを作成する)は、
ユーザー登録などの重要な説明がありました。
サービスを使ってくれる方のためにも、
きっちり学習しないとね!
Railsチュートリアル第1章(2周目) はこちら。
ここでしか読めない!話題のやめ太郎さんへの質問
やめ太郎さんが、面白おかしく記事を書けるのは
前職がコールセンターだったから??
Twitterも要チェック☆
ほかにも50名以上のお話が読めるのは、このブログだけ!