2

次の正規表現を使用しています

VALID_WEBSITE_REGEX = /^(http|https):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,6}(:[0-9]{1,5})?(\/.*)?$/ix

このルールで Web サイトのエントリを検証するには:

validates :website, length: { maximum: 150 }, format: { with: VALID_WEBSITE_REGEX }

(150 は任意です)。

ただし、フォームを保存/更新すると、「Web サイトが無効です」という検証エラーが表示されます。処理するコンテンツがある場合にのみ検証ルールの「フォーマット」セクションが処理されるようにするにはどうすればよいですか?

4

2 に答える 2

4

検証には allow_blank オプションを使用できます

:allow_blank => true 

このオプションは、属性の値が空白の場合に検証を通過させます?たとえば、nil や空の文字列などです。続きを読む: http://guides.rubyonrails.org/active_record_validations_callbacks.html#allow_blank

于 2012-05-11T08:51:19.213 に答える
0

?全体を演算子で囲みます。

VALID_WEBSITE_REGEX = /^((http|https):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,6}(:[0-9]{1,5})?(\/.*)?)?$/ix

空白も許可したい場合は、\s*両端に追加します。

VALID_WEBSITE_REGEX = /^\s*((http|https):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,6}(:[0-9]{1,5})?(\/.*)?)?\s*$/ix
于 2012-05-11T08:46:48.113 に答える