我有一個場不直接相關的字段在下面的對象一個Rails輸入形式:我將其放入的ActiveRecord字段之前做一些計算。到目前爲止沒問題:我只是將計算放入控制器中。Rails的驗證,不記錄
我的問題是,計算可能會失敗,我想報告給用戶。我知道如何使用Flash警報來做到這一點,但是這並不會將錯誤與特定的表單輸入字段相關聯,並且與記錄驗證給出的錯誤不一致。我想要做的是告訴表單哪個輸入字段失敗了,爲什麼。
我可以找到的所有文檔都使用ActiveRecord驗證,但這太晚了:我無法創建ActiveRecord,因爲我沒有數據來填充它(即使我使用無效的虛擬數據填充它 - yech! - 我錯過了驗證時造成錯誤的細節。
那麼什麼是從控制器生成表單驗證錯誤的Rails的方式(好吧,好吧,但我希望得到它的工作之前,我重構它到一個問題),而從模型驗證?或者我該怎麼做呢?
編輯: 這裏是那種以爲我試圖做的一個例子。想象一下,一個車隊經理處理成千上萬的車輛,通過他們的註冊號碼(車牌)來識別。當車輛檢查到司機時,沒有意義提供包含數千個物品的下拉列表,因此用戶輸入註冊號碼。控制器查看(或更好地將其傳遞給模型以查找),它與車輛記錄相匹配,並將車輛記錄ID放入結帳中。如果用戶輸錯數字,控制器/模型(可能)會發現該車輛沒有條目。我知道要以與其他驗證失敗一致的方式告訴用戶爲什麼保存失敗。
您可以用虛擬屬性。將它添加到表單中並將其驗證 – Mandeep 2014-10-03 15:25:58
@Mandeep擁有正確的想法。這個邏輯不應該在控制器中,而應該在模型本身中。 – engineersmnky 2014-10-03 15:57:48