嗨,我有一个带有以下验证的大礼包model:
with_options presence: true do
validates :firstname, :lastname, :address1, :city, :country
validates :zipcode, if: :require_zipcode?
validates :phone, if: :require_phone?
end
我想从状态验证中删除城市和/或国家/地区。在我的address_decorator
中,我写了这个
Spree::Address.class_eval do
with_options presence: true do
validates :firstname, :lastname, :address1
validates :zipcode, if: :require_zipcode?
validates :phone, if: :require_phone?
end
......
但是这并没有删除城市或国家。为了创建新记录,仍然需要两者。
我想念的是什么?请帮助。
添加“ with_options”时,您并没有删除以前的验证,只是添加了更多。
因此,将删除:city和:country的验证
没有检查自己,但是我看过类似的东西:
.class_eval do
_validators.reject{ |key, _| key == :field }
_validate_callbacks.reject do |callback|
callback.raw_filter.attributes == [:field]
end
其中:field是:city和:country