Ruby on rails Rails验证:创建时跳过格式

Ruby on rails Rails验证:创建时跳过格式,ruby-on-rails,validation,Ruby On Rails,Validation,Rails正在跳过创建时的:格式验证。在create上,它接受任何东西。更新时:presence和:format都按预期工作。我如何修改它,使其:允许在创建时为空,并检查格式 validates :mail, :allow_blank => true, :on => :create, :format => { :with => /^([^@\s]+)@((?:[-a-z0-9]+\.)*[a-z]{2,})$/i },

Rails正在跳过创建时的:格式验证。在create上,它接受任何东西。更新时:presence和:format都按预期工作。我如何修改它,使其:允许在创建时为空,并检查格式

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

尝试使用单独的
验证: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

尝试使用单独的
验证: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
不知道为什么,但我得到了:“你需要提供至少一个验证”,如果我有:允许你自己空白。所以我把它和:format/:length组放在一起,并按照您的建议将:presence分开,现在一切都正常了。不知道为什么,但我得到了:“您需要提供至少一个验证”,如果我有:allow_blank它自己。所以我把它和:format/:length组放在一起,并按照您的建议将:presence分开,现在一切正常。