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

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

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

   


6.2.3長さを検証する、です。空データを拒否した次は、入力できるデータ長の制限です。

テストを書く

リスト6.11 nameの長さ検証のテスト。
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 ":nameは50文字以下である。" do
    before { @user.name = "a" * 51 }
    it { should_not be_valid }
  end

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

テストは失敗します。

Userにname長制限のコードを書く

リスト6.12 name属性の長さの検証を追加する。
app/models/user.rb

class User < ActiveRecord::Base
  validates :name,  presence: true, length: { maximum: 50 }
  validates :email, presence: true
end

テストは成功します。

さて、ここでうっかりしていましたが、validatesについて調べます。
validatesはrailsのメソッドでした。

validates(*attributes) Link

This method is a shortcut to all default validators and any custom validator classes ending in ‘Validator’. Note that Rails default validators can be overridden inside specific classes by creating custom validator classes in their place such as PresenceValidator.

Examples of using the default rails validators:

validates :terms, acceptance: true
validates :password, confirmation: true
validates :username, exclusion: { in: %w(admin superuser) }
validates :email, format: { with: /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i, on: :create }
validates :age, inclusion: { in: 0..9 }
validates :first_name, length: { maximum: 30 }
validates :age, numericality: true
validates :username, presence: true
validates :username, uniqueness: true

次は
6.2.4フォーマットを検証する
です。

 - テクニカル ,

Message

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

  関連記事

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

さてRailsTutorial4.0も5章に入ります。まだ序の口です。5章ではb …

no image
RailsTutorial4.0を高速で復習する。5.6章。演習1問目。

5.6演習です。 一問目。 リスト5.28の静的ページのテストコードは簡潔ですが …

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

第6章ユーザーのモデルを作成する。です。ここから開発っぽくなってきます。って今ま …

no image
Mavericksでruby2.0 rails4.0.0のGem

MacBookAirにMavericksインストールして初めてのrails ne …

no image
WindowsのiTunesからMacのiTunesへのデータ移行

MacBookAir 2日め。なかなかMacにふみきれなかったのは、Window …

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

3.1章は静的ページの追加。これをトップページとして後で色々追加していきます。 …

no image
Google Appsで問い合わせフォームを作りました

とっても簡単でした。Google Appsでこのブログに問い合わせフォームを設置 …

railsでtest unitを生成させない

ruby on rails3プリケーションプログラミングの本の内容をruby2. …

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

4.6演習、です。4章がRubyの説明章だったので演習はRuby問題になっていま …

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

9.2認可、です。 自分以外の人が自分のProfileを変更できないようにします …