New-Village

月間ブログ。だいたい1カ月に1回は更新しているようです。

User Model作成 - Railsチュートリアルおさらい

4月に入って異動になりました。ということで、早く帰れるようになったのでRailsでアプリ作成を開始しました。 

完成するかどうかは分からないけど、半分必要に駆られて、ドキュメント管理ツールを作ろうと思っています。はじめはドキュメントにコメントをつけて Amazon S3にアップロードできればいいかな…と思っています。

それでは、本日はログイン機能実装の前段階として、ユーザモデルを作成していきます。なお、この記事は、ほとんどRailsチュートリアルをおさらいする内容になっていますので悪しからず。

1. パスワード暗号化用ソフトを入れる

gemfileに "gem 'bcrypt-ruby', '3.1.2'" を追加して、bundle installする。

2. モデルを作成する

rails generate model User name:string email:string 

3.  データベースにテーブルを作成して、テスト環境を準備する。

rake db:migrate

rake test:prepare

4. テストを作成する。

以下、代表的な項目。

  • データが投入できているかどうか(respond_to)
  • 空白値が投入できないようになっているかどうか(be_valid)
  • 文字長が長過ぎないかどうか("a" * 51)
  • 正しいフォーマットかどうか(expect(@user).not_to be_valid)
  • 一意になっているかどうか

 5. モデルに入力制限を設定

before_save { self.email = email.downcase }

validates :name, presence: true, length: { maximum: 50 }

VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i

validates :email, presence: true, format: { with: VALID_EMAIL_REGEX }, 
                                                uniqueness: { case_sensitive: false } 

has_secure_password

 

6. インデックスの作成

rails generate migration add_index_to_users_email

で、db/migrate/[timestamp]_add_index_to_users_emailを作成して以下を記述する。

add_index :users, :email, unique: true

 

とりあえず、基本的なユーザーモデルを作成してコミット。後は明日。 

メモ:残タスク

  • ユーザーを作成するmigrateファイルを作成する。
  • ログイン画面を作成する。