Dmi*_*sky 3 validation activemodel ruby-on-rails-4
假设我有两个使用 Rails 单表继承的模型。我可以轻松地在子模型中添加验证以使某些字段成为必需的。但是,如果我想要更改验证,使子模型中的字段可选或具有不同的标准(例如数字),该怎么办?
class Parent
include Mongoid::Document
field :name, type: String
field :age, type: Integer
validates :name, presence: true
validates :age, numericality: { greater_than_or_equal_to: 25 }
end
class Child < Parent
# how can I make name optional in Child?
validates :age, numericality: { less_than: 25 }
end
Run Code Online (Sandbox Code Playgroud)
我可以通过创建自定义验证方法,然后在子类中覆盖它们来完成,但我希望有一种方法可以仅使用默认的 Rails 验证器格式来做到这一点。
小智 5
您应该能够在 Parent 中执行类似的操作
validates :name, presence: true, unless: proc { |c| c.is_a? Child }
Run Code Online (Sandbox Code Playgroud)
不太好,但是如果您只有一个要覆盖的子类,则非常干净。我确信还有其他方法
| 归档时间: |
|
| 查看次数: |
1492 次 |
| 最近记录: |