我正在提供外部公司调用的Web服务。所需的数据涵盖了几个模型,包括人员,地址等。我想根据请求中的某些字段有条件地验证接收的数据。我最终会有许多不同的验证数据集,虽然目前我只有一个,我即将添加第二个。
我当前的模型看起来像这样
class Person < ActiveRecord::Base
validates_length_of :first_name, :within => 1..32, :allow_blank => true
...
...
end
从概念上讲,我的模型现在需要做这样的事情。
class Person < ActiveRecord::Base
validate :first_name?
def first_name?
if country == 'UK'
if company_name == 'ABC'
validates_length_of :first_name, :within => 1..32
else if company_name == 'DEF'
validates_length_of :first_name, :within => 2..20
end
else if country == 'DE'
if company_name == 'ABC'
validates_length_of :first_name, :within => 1..32
else if company_name == 'DEF'
validates_length_of :first_name, :within => 2..20
end
end
end
这显然适用于2个公司/国家,但随着公司和/或国家数量的增加,效果不佳。我现在正在考虑将验证数据保存在数据库或YAML文件中,然后根据模型外部存储的最小,最大格式值为每个字段手动执行验证。
我想我可以将验证数据存储在类似于以下
的结构中country: UK companyname: ABC field: first_name minimum_length: 2 maximum_length: 20 required: true field: middle_name minimum_length: 1 maximum_length: 10 field: email_address minimum_length: 10 format: /someregexforemail addresses/ companyname: DEF field ... country: DE companyname: XYZ field: ....
等等。
然后我可以加载此验证数据并在我自己的手动验证器中使用它。
过去有没有人做过类似的事情,你使用了什么方法?我特别想知道你是如何接触以下内容的。
答案 0 :(得分:1)
我用电话号码做了类似的事情。你的方法与我自己做的很相似。回答你的问题:
这对你有帮助吗?