心はいつも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

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

  関連記事

Railsを立ち上げる

RubyのアップデートとRailsのインストールが無事終わったので、いよいよRa …

カスペルスキーを使っています

PCのウィルススキャンは、多くの人が使っているかと思います。 大手3社のソフトを …

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

8.1.3サインインのフォーム、です。 ログイン画面を作る 入力フォームをfor …

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

静的ページにaboutというページを追加するのですが、rails gを先にするの …

no image
RailsTutorial4.0を高速で復習する。4章と4.1章。

さて、4章です。4章ではRubyに関する内容が多かったような記憶が。 動的なWe …

no image
MacBookAir 1日め

ようやくMacBookAir を購入しました。Dellノートがずっと調子悪かった …

no image
retweetボタンを追加してみました

最近いろんなブログで見かけるretweetボタン。ブログのエントリーについている …

OpneSSL,Readline,Libyamlをインストールする

先ほどインストールしたHomebrewを使って、rbenvをインストールしたいと …

no image
RailsTutorial4.0を高速で復習する。8.2.1章。途中から。

Railsのセキュリティに納得がいかず3日ほど低速です。とりあえず進めています。 …

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

3.3.3埋め込みRubyです。viewにrubyコードを埋め込んでtitleを …