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

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

  関連記事

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

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

no image
future vision 2019 vs 2010

マイクロソフトのfuture visonが話題らしい。 2019年の近未来。 情 …

Mac miniのメモリを自力で16Gに増設しました

Mac miniとDellの27インチIPS液晶、とても快適です。もっと快適にす …

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

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

確定申告終わったぁ〜MoneyForwardのおかげです

確定申告終わりました。青色で申請しているので決算書必要なのですが、昨年から使い始 …

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

9.1.2編集の失敗、です。 テストを書きます リスト9.9 ユーザーupdat …

初めてのRuby8章 8.4特異メソッドと特異クラス

特異メソッドと特異クラス プログラムなんて、クラスの継承だけで書けてしまうのが良 …

no image
「Follow me」バッジのつけ方。

ブログの横についている「Follow me」バッジ。いろんな方がつけているのを見 …

パーフェクトRuby 2章Rubyの基礎 2-2 変数と定数

p47 2-2-1 ローカル変数 スコープは ・ブロック内 ・メソッド定義内 ・ …

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

10.2マイクロポストを表示する、です。 ポストの投稿ではなく、表示だけを先に作 …