0

私はレールを初めて使用し、現在検証について学んでいるので、no (整数型) という名前のフィールドを持つフォームを作成しました。検証用のモデルでは、次のようなことを行いました。

validates :no,
        :presence => true,
        :uniqueness => true,
        :numericality => { :only_integer => true, :greater_than_or_equal_to => 1, :less_than_or_equal_to => 99999 }

何も入力しないと 2 つのエラー メッセージが表示されるようになりました

1]Noを入力してください。 -> Noを入力してください。2]いいえは数値で入力してください。 ->数値は整数のみで入力してください。

私のOSは日本語なので、日本のものについては申し訳ありません;-)

私が必要とするのは、「いいえ」フィールドが空の場合、その空のためのerror_messageのみを表示することです。現在、フィールドが空の場合、存在と数値の両方について error_message が表示されています。

これが非常に基本的な質問である場合は申し訳ありませんが、回答を検索しようとしましたが、何も見つからないようです。

4

1 に答える 1

0

数値の検証を変更して、そのフィールドが存在する場合にのみ機能するようにします。

validates :no,
  :presence => true,
  :uniqueness => { :if => :no_is_present? },
  :numericality => {
    :only_integer => true,
    :greater_than_or_equal_to => 1,
    :less_than_or_equal_to => 99999,
    :if => :no_is_present?
  }

def no_is_present?
  no.present?
end
于 2013-03-17T13:08:41.203 に答える