【问题标题】:Override validation in rails model覆盖 Rails 模型中的验证
【发布时间】:2020-05-11 15:09:55
【问题描述】:

您好,我有一个 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】:

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2012-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-09
  • 1970-01-01
相关资源
最近更新 更多