心はいつもAirPucci (空元気でもいいから)

毎日がPucciを着ているような気分

RailsTutorial4.0を高速で復習する。6.2.2章。

      2014/01/25


6.2.2プレゼンスを検証する、です。いよいよモデルにコードを書いていきます。
RailsTutorialでは、まず失敗するコードを書くための勉強として、モデルにコードを書いてかからテストを書き、パスするか確認したうえで、モデルのコードをコメントアウトしテストが失敗することを確認しています。
七面倒くさいので、ますテストを書きます。

Userのテストを書く

リスト6.8 name属性の検証に対する、失敗するテスト。
リスト6.9 email属性の存在性のテスト。
spec/models/user_spec.rb

require 'spec_helper'

describe User do

  before do
    @user = User.new(name: "Example User", email: "user@example.com")
  end
  subject { @user }

  #name属性のデータがある
  it { should respond_to(:name) }
  #email属性のデータがある
  it { should respond_to(:email) }
  #@userがvalidである
  it { should be_valid }

  describe ":nameが空の場合のテスト" do
    before { @user.name = " " }
    #validではないと検証する
    it { should_not be_valid }
  end
  describe ":emailが空の場合のテスト" do
    before { @user.email = " " }
    #validではないと検証する
    it { should_not be_valid }
  end
end

実行すると、
User :nameが空の場合のテスト 、User :emailが空の場合のテスト
のエラーは出ましたが、
it { should be_valid }
のエラーは出ません。rails g modelsの時にできてしまっているからですね。

モデルの属性と、生成したオブジェクトが有効かどうかのテストはrails gする前に書くんですかねぇ。

Userを実装する

Userの:nameが空の場合のテストが失敗するってことは、:nameが空でもデータ登録できてしまうってことで、それは嫌です。なのでUserにコードを書いて、空データだとはじくようにしたいです。

リスト6.10 name属性とemail属性の存在性を検証する。
app/models/user.rb

class User < ActiveRecord::Base
  validates :name,  presence: true
  validates :email, presence: true
end

テストはパスしました。

次は、
6.2.3長さを検証する
です。

 - テクニカル ,

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

  関連記事

RailsTutorial4.0を高速で復習する。8章。

仕様の探求 userモデルには、登録と認証、承認に必要なモデルは既に作ってありま …

no image
RailsTutorial4.0を高速で復習する。5.3.4章。

5.3.4RSpecを洗練させる、です。 確かに、名前付きルートに書き換えていて …

no image
iPhoneの月請求は8円のみです。

昨年11月に、e-mobileからiPhoneにMNPしました。 ちょうど、乗り …

Objective-C苦節3ヶ月アプリ作れるようになった

このブログairpucci.comのメニューにアプリ開発追加しました。 昨年秋よ …

no image
RailsTutorial4.0を高速で復習する。6.3章。

6.3セキュアなパスワードを追加する、です。 パスワードはセキュアであるべきと思 …

BD再生のオープンソース

メディアはシリコンすら持ちたくない主義なのですが、どうしてもBluelay Di …

アイキャッチ画像のリサイズ

768 × 1024 pxの写真をアイキャッチに指定して、150pxにリサイズ表 …

no image
ヘルパーメソッドを自作する

便利なrailsのヘルパーメソッド。自分でも作れます。 作るときは、 アプリのd …

no image
RailsTutorial4.0を高速で復習する。10.3.2章。

10.3.2マイクロポストを作成する、です。 テストを書く micropostの …

WindowsキーボードをMacで使う

キーボード難民です。Mac miniでApple純正のキーボードを使っていました …