0
我正在提供一個由外部公司調用的Web服務。所需的數據包括幾個模型,包括人員,地址等。我想根據請求中的某些字段有條件地驗證接收到的數據。我最終會有許多不同的驗證數據集,儘管目前我只有一個,而我即將添加第二個驗證數據。如何在n條件下使用ActiveRecord進行條件驗證?
我目前的模型看起來像這樣
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: ....
等。
我可以加載這個驗證數據並在我自己的手動驗證器中使用它。
有沒有人在過去做過類似的事情,你使用了哪些方法?我特別想知道你是如何處理以下事情的。
- 你從哪裏存儲配置數據,即DB或YAML?
- 您是否加載和解析每個請求的配置數據,或者一次加載服務器?
- 您是如何構建驗證的實際方法的?
是的。謝謝 – 2009-02-25 10:39:11