Userモデルをgenerate

```
$ rails generate model User name:string email:string
```
userモデルをmigrate

```
$ bundle exec rake db:migrate
```
rails cを動かすためにrb-readlineを追加

```
$ vim Gemfile
$ bundle install
```
userモデルの:nameと:email属性のテストを追加

```
$ vim spec/models/user_spec.rb
```
name属性のvalidateに対するテストを追加

```
$ vim spec/models/user_spec.rb
```
Userモデルのnameにvalidateを追加

```
$ vim app/models/user.rb
```
Userモデルのemailに対してのvalidateテストを追加

```
$ vim spec/models/user_spec.rb
```
Userモデルのemailに対して存在性のvalidateを行う

```
$  vim app/models/user.rb
```
Userモデルの長さを検証するテスト
Userモデルのnameの長さを制限するvalidateを追加

```
$ vim app/models/user.rb
```
メールアドレスフォーマットの検証テストを追加

```
$ vim spec/models/user_spec.rb
```
Userモデルのemailに正規表現でのフォーマットのvalidateを追加

```
$ vim app/models/user.rb
```
重複するメールアドレスの拒否のテストを追加

```
$ vim spec/models/user_spec.rb
```
Userモデルのemailの一意性のvalidateを追加

```
$ vim app/models/user.rb
```
Userモデルのsyntax errorを修正

```
$ vim app/models/user.rb
```
emailの大文字小文字を区別しない,重複テストを追加

```
$ vim spec/models/user_spec.rb
```
Userモデルのemailの大文字小文字を無視したvalidateを追加

```
$ vim app/models/user.rb
```
データベースレベルでemailの一意性をもつためにmigrationファイルを作成

```
$ rails g migration add_index_to_user_email
$ vim db/migrate/20140427060329_add_index_to_user_email.rb
```
db:migrate

```
$ bundle exec rake db:migrate
```
Userモデル保存時にemailを小文字にする

```
$ vim app/models/user.rb
```