2012-11-24 41 views
0

相信請求後,有兩種類型的錯誤,可以根據用戶的請求期間發生。OOD的報告錯誤處理用戶在服務層

{1}:系統錯誤(異常,致命的錯誤,警告,通知等)
{2}:用戶控制誤差(什麼用戶做錯了,通常驗證過程中可能出現)

一般報告{1}相對簡單。大多數人只會顯示錯誤頁面或通知。 {2}的情況是不同的。

的Yii和Rails和其他一些框架提供了一個驗證方案,您可以在模型中的每個屬性指定驗證器。在驗證過程中,驗證器將驗證指定屬性並以地圖形式報告錯誤:attributeName =>錯誤數組。

在應用程序中,在Service Layer服務可能依賴其他服務邏輯和領域模型邏輯,所以它的屬性集和驗證也依賴於這些國外服務和域模型。

例如,用戶註冊服務擁有的屬性「用戶名」和「密碼」,其邏輯規則可以依賴於用戶的邏輯規則在驗證用戶名的最大長度和密碼最大長度。

所以我的問題是,我們如何通過依賴的多層次驗證這些屬性並報告錯誤返回給用戶。

回答

0

沒那麼難。大多數模型驗證錯誤都可以在客戶端使用某種形式的客戶端驗證來處理。例如,您可以使用client_side_validation寶石。可以渲染這些錯誤的通知或警告也爲follws

@user.errors.full_messages.join('. ') 

現在回到你的問題,你可以有異常處理多層。層的首選項取決於您正在實施的功能。例如,在創建新用戶時,首先要檢查的是數據有效性。您也可以擁有應用程序範圍的異常處理程序,並且每個異常處理程序都可以在那裏有own error reporting mechanisms。所以這隻取決於場景。

+0

由於模型驗證錯誤並不例外,我認爲使用異常處理程序是不是在這種情況下是可行的。 –

+0

所以,在註冊用戶的過程中,註冊系統的重點將放在用戶數據驗證上,並且在用戶登錄時,重點應放在對用戶進行身份驗證上。沒有必要檢查用戶名或密碼驗證。 –

+0

在註冊系統中,我們必須驗證用戶名最大長度,用戶最大長度,密碼最大長度等。以確保它符合數據庫設置,因此註冊系統必須要求域模型或數據映射器進行這些驗證。我在決定服務是否必須從這些外來物體中導入驗證或讓它們驗證並冒出錯誤時猶豫不決。 –