1

Rails は、作成時に :format 検証をスキップしています。作成時には、何でも受け入れます。その後、更新時に :presence と :format の両方が期待どおりに機能しています。これを変更して、作成時に :allow_blank を実行し、フォーマットもチェックするにはどうすればよいですか?

validates :mail, :allow_blank => true, :on => :create,
                 :format => { :with => /^([^@\s]+)@((?:[-a-z0-9]+\.)*[a-z]{2,})$/i },
                 :length => { :maximum => 60 },
                 :presence => true, :on => :update
4

1 に答える 1

1

validates:create、:update、およびすべてのライフサイクルイベントに個別のステートメントを使用してみてください。あなたのオプションは、あなたがそれらをすべて一緒にまとめるとき:on => :update、本質的にオプションを上書きすることです。:on => :create

validates :mail, :format => { :with => /^([^@\s]+)@((?:[-a-z0-9]+\.)*[a-z]{2,})$/i },
                 :length => { :maximum => 60 }

validates :mail, :allow_blank => true, :on => :create,

validates :mail, :presence => true, :on => :update
于 2012-11-09T17:37:32.670 に答える