Rails模型中的替代验证

问题描述 投票:0回答:1

嗨,我有一个带有以下验证的大礼包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
......

但是这并没有删除城市或国家。为了创建新记录,仍然需要两者。

我想念的是什么?请帮助。

ruby-on-rails spree
1个回答
0
投票

添加“ 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

© www.soinside.com 2019 - 2024. All rights reserved.