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

モデルのバリデーションで if と unless を使う

Rails でモデルのバリデーションを書くときに ifunless を使うときがたまーにあって,そのときに書き方を間違えて undefined method を出しちゃったりするので,自分用にメモしておく.

RailsGuides

RailsGuides に書かれてるんだからちゃんと読んで!って言われたら何も言えませんw

  • 5 Conditional Validation
    • 5.1 Using a Symbol with :if and :unless
    • 5.2 Using a String with :if and :unless
    • 5.3 Using a Proc with :if and :unless

Active Record Validations — Ruby on Rails Guides

メソッドを呼ぶ場合はシンボルで

paid_with_card? って書きたくなるけど,シンボルで書く.

validates :card_number, presence: true, if: :paid_with_card?

式を書く場合は文字列で

name.nil?self.name.nil? って書きたくなるけど,文字列で書く.

validates :surname, presence: true, if: "name.nil?"

関連エントリー

困ったときに読む一冊

Ruby on Rails 4 アプリケーションプログラミング

Ruby on Rails 4 アプリケーションプログラミング