项目里使用了 Spree,其中的 Address 里有这样一个验证:
validates :firstname, :lastname, :address1, :city, :zipcode, :country, :presence => true
但是业务需求是:zipcode
是可选的,所以需要取消对:zipcode
的 presence 验证。
目前的解决方法如下:
# Delete presence validation on :zipcode
validators.select{|v| v.kind_of?(ActiveModel::Validations::PresenceValidator)}.each do |validator|
validator.attributes.delete :zipcode
end
本人新手,所以不知道有没有现成的方法可以更好地解决这个问题。另外我总觉得上面的代码不是很让人放心啊,不知哪位前辈能够分享一下经验?先谢过了!