我需要根据模型中的某个字段对Rails中的模型进行条件验证。这是earlier question的后续行动,它促使开发出一种感觉不正确的解决方案。ActiveRecord中的条件验证
我有很多ActiveRecord模型都是基于'Order Model',其缩写版本如下所示。
class Order < ActiveRecord::Base
has_many: previous_addresses
has_one: applicant
has_one: current_address
end
所有其他型号属于订单。
我希望根据订单的公司属性对申请人,current_address等各种模式进行不同的验证。
我已经开发了一个解决方案,涉及一个完整的手动验证套件,支持所有标准activeRecord验证器。这个解决方案是用许多表格来开发的,例如模型,字段,field_items等,它们描述了验证并且相当于很多数据。
我现在必须处理这些数据,并为每个连接到的新公司进行复制和编辑。这是乏味和容易出错的。
虽然在阅读'The Rails Way'时,我发现Obie Fernandez描述了如何将验证代码以ActiveRecord验证语句的形式保存在数据库中,并在运行时根据公司id的值将其注入到模型中。
我想象在表保存数据,如下列: -
company: 200 model: person Code validates_length_of :middle_name, :maximum => 20, :allow_nil => true company: 201 model: person Code validates_length_of :middle_name, :maximum => 1, :allow_nil => true
因此,对于公司201“约翰”中间名就不能通过验证,但是这将是确定的公司200
有没有人看过这样做,如果是的话,他们有任何提示/建议如何做到这一点,甚至更好没有任何人链接到教程/代码这样做?
这无疑会起作用,但我试图避免随着公司数量增长而导致的巨大ifs连锁。这个想法是为每个公司的数据库添加验证代码,而不是将它们全部列在模型中。这应该会使维护更容易 – 2009-04-18 07:05:49