読者です 読者をやめる 読者になる 読者になる

Railsガイドメモ6

programming

今日は 4.3 共通のバリデーションオプション から。いつも通り、以下は、本文からコピペしただけ。


  • 厳密なバリデーション バ リ デ ー シ ョ ン を 厳 密 に し 、オ ブ ジ ェ ク ト が 無 効 だ っ た 場 合 に ActiveModel::StrictValidationFailed が発生するようにすることができます。

  • 4.5.2 :if や:unless で文字列を使用する 文字列を使用することもできます。この文字列は後で eval で評価されるため、実行可 能な正しい Ruby コードを含んでいる必要があります。この方法は、文字列が十分短い場 合にのみ使用するのがよいでしょう。 validates :surname, presence: true, if: “name.nil?”

  • 4.5.5 バリデーションの条件を結合する 逆に、バリデーションを行なう条件を複数定義したい場合、Array を使用できます。同 じバリデーションに対して、:if または:unless のどちらでも使用できます。 このバリデーションは、:if 条件がすべて true になり、かつ:unless が 1 つも true にならない場合にのみ実行されます。

class Computer < ActiveRecord::Base 
    validates :mouse, presence: true,
        if: ["market.retail?", :desktop?],
        unless: Proc.new { |c| c.trackpad.present? }
end
  • 4.7.4 errors[:base] 個別の属性に関連するエラーメッセージを追加する代りに、オブジェクトの状態全体 に関連するエラーメッセージを追加することもできます。

  • また、Rails のフォームヘルパーを使用してフォームを生成した場合、あるフィールド でバリデーションエラーが発生すると、そのエントリの周りに追加の

    が自動的に生 成されます。

<div class="field_with_errors">
    <input id="post_title" name="post[title]" size="30" type="text" value="">
</div>

この div タグに好みのスタイルを与えることができます。


第4章を読み終わった。バリデーション、いろいろ出来るなあ・・・