Ruby on Rails チュートリアル on Cloud9 の学習録(第6章)
第六章までまとめたところで、やっと「続きを読む」機能があることに気づきました。
これで、雑然としたブログが少しは読みやすくなるかも。
それでは、引き続き Ruby on Rails チュートリアル 第六章の学習録を。
第6章 ユーザーのモデルを作成する
6.1.1データベースの移行
rails generate model User name:string email:string
を実行すると、"db/migrate/[timestamp]_create_users.rb"が作成されます。ターミナルから"rake db:migrate"した際に、このファイルを読み込んでテーブルが作成されます。
覚書: コントローラ名には複数形を使い、モデル名には単数形を用いるという慣習を頭に入れておいてください。コントローラはUsersでモデルはUserです。
ちなみに、"rake db:migrate"した際に作られるテーブル名は"Users"になります。
6.3セキュアなパスワードを追加する
$ rails generate migration add_password_digest_to_users password_digest:string
既存のモデルにカラムを追加する場合は上記のように書く。"rails generate migration"までは定型句で、"add_"は追加の意味、"password_digest"は追加するカラム名、"to_users"は追加先のカラム名です。
rakeで"test:prepare"する意味が分からない。確かにやらないとエラーになるけど…どういう仕組みなんだろうか。
$ bundle exec rake db:migrate
$ bundle exec rake test:prepare
$ bundle exec rspec spec/
余談: rspecの日本語対応
rspecのdescribe"..."の部分は、テストの内容について記述する部分なので、日本語で技術出来ないものかと思って書いてみたが、テストを実行する際に以下のエラーになってしまった。
/var/lib/stickshift/52e69b575004466e70000a58/app-root/data/753774/spec/models/user_spec.rb:84: syntax error, unexpected $end, expecting keyword_end
describe "パスワードが短すぎる�...
で、調べてみたところ、ファイルの先頭に" # coding: utf-8"を記述すれば良いみたいです。で、早速、user_spec.rb の先頭に文字コードの指定を入れてテストしてみたところ、エラー無くテストすることができました。