2010-03-07 47 views
1

我一直在尋找一個爲數週的解決方案。但仍然失敗..我有存儲過程被稱爲使用在軌道上的紅寶石..在存儲過程我有驗證和拋出使用raiserror。顯示錯誤消息拋出ms sql在軌道上的紅寶石

ex。 RAISERROR( 「起始日期必須小於結束日期」)

在我的紅寶石

上軌控制器

高清保存 開始 M.find_by_sql「EXEC spTestProc '3/15/2010',「3/1/2010 '' rescue exception => e render:js => alert(e.message); 結束

而是我得到的錯誤信息「起始日期必須小於結束日期」,我得到這個錯誤消息「DBI :: DatabaseError:37000(50000)的Microsoft] [ODBC SQL Server驅動程序] [SQL服務器] StartDate必須小於EndDate ..:Exec spTestProc'3/15/2010','3/1/2010''

我需要顯示我的存儲過程拋出的錯誤消息,但我得到了一些額外的消息,我不喜歡顯示像「DBI :: DatabaseError ...等」。我怎樣才能做到這一點?

謝謝。

回答

0

使用正則表達式刪除不需要的文本。

e.message.gsub(/(^.*SQL Server\])|(: Exec spTestProc.*$)/i, '') 
# this will return StartDate must be less than EndDate.. 
+0

謝謝..我會試試這個。 – Jett 2010-03-07 09:48:14

+0

但是在Exception類中沒有內置函數,它只會得到實際的錯誤?就像在asp.net中一樣,它會得到實際的錯誤信息。謝謝 – Jett 2010-03-07 10:00:10

+0

ASP.net很有可能爲你做這一步。 – 2010-03-07 14:02:23