はじめに Ruby on Rails で どちらか一方のカラムを入力必須にするバリデーションについて書きます。 具体的な例をあげると、ユーザーモデルのemailとphone、どちらか片方だけに必ず値が入るようにバリデーションします。両方に値が入っている場合もNGです。 要件に合わなかったバリデーション ググって下記のようなバリデーションを見つけましたが、両方入力した場合にバリデーションを通ってしまうので、要件には合いません。 class User < ApplicationRecord # phoneが空ならば、emailを必須にする validates :email, presence: true, unless: :phone? # emailが空ならば、phoneを必須にする validates :phone, presence: true, unless: :email? end