2011-12-04 11 views
0

所以在我的應用程序有:Multi/Cross模型驗證?

  • MODELA
  • ModelB
  • ModelC
  • ModelD

在我的控制器MODELA,我創建了一個名爲 「is_verified」 的自定義功能。在is_verified中,我通過ModelA/B/C/D調用多個activerecord搜索來提取特定的數據行,做一些比較,如果條件通過,is_verified返回'true',函數通過'false'並且吐出一些錯誤給用戶

雖然我在做什麼很簡單,並完成工作,我相當確定它不是最好的實踐中查詢多個表和執行條件從控制器內驗證我的功能。

什麼是執行跨模型驗證的最佳實踐,就像我上面的情況一樣。

回答

0

我會將驗證移至模型。我還會在每個模型上創建多個與驗證相關的方法,然後調用這些方法。

理想的情況下,A型會碰到這樣的:

def valid? 
    B.valid?(self) && C.valid?(self) && D.valid?(self) 
end 

你的模型。然後每時通過的一項實例,可以看看他們是否有任何理由,該實例不應該是有效的。

嘗試將驗證儘可能細化,這樣就更容易進行測試/驗證。

+0

有趣。這也是我的想法。我假設(自我)是一個變量或對象,我正在傳入這個特定的模型? – overworkedasian

+0

Self是你試圖驗證的A的實例。 –