我需要根據模型中的某個字段對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