1
我有一個表單包含多個字段有整數輸入。我對存在,包含和數值等字段進行了基本驗證。然而,我堅持的部分是檢查所有字段的總和等於100.我需要找到一種方法來總結字段中的所有值,並確保它們與驗證程序的總和相加。我考慮使用虛擬屬性來完成字段的總和,然後在該值上使用驗證器,但是,我不確定如何實現它。任何幫助將不勝感激。Rails - 如何在數據庫中輸入值之前總結所有字段並將總和用作驗證?
感謝, 迷茫軌初學者
我有一個表單包含多個字段有整數輸入。我對存在,包含和數值等字段進行了基本驗證。然而,我堅持的部分是檢查所有字段的總和等於100.我需要找到一種方法來總結字段中的所有值,並確保它們與驗證程序的總和相加。我考慮使用虛擬屬性來完成字段的總和,然後在該值上使用驗證器,但是,我不確定如何實現它。任何幫助將不勝感激。Rails - 如何在數據庫中輸入值之前總結所有字段並將總和用作驗證?
感謝, 迷茫軌初學者
您可以使用自定義的驗證方法:看http://guides.rubyonrails.org/active_record_validations_callbacks.html#custom-methods更多。
因此,例如,你可以試試你的模型如下,其中FIELD1和FIELD2的屬性:
class Klass < ActiveRecord::Base
validate :sum_equals_100
def sum_equals_100
if field1 + field2 != 100
errors.add(:base, 'fields must sum to 100')
end
end
end
在自定義的驗證方法,你可以總結模型上的領域,看看他們是否等於100%的。我已經用一個例子更新了答案,以便嘗試和演示。 – Puhlze
我現在試一試,非常感謝。我認爲我的問題是直接從模型訪問字段。當我早些時候嘗試過的時候,我收到了一些錯誤,但是希望這次能夠運行 – soliman
啊,這樣做的錯誤就是我的表單構造方式。我這樣做了,所以字段的數量可以改變,這取決於添加了多少賦值類型(http://pastebin.com/Qh7sC6ur),所以我無法直接通過屬性訪問這些值。這就是爲什麼我認爲虛擬屬性是最好的,但我不知道如何實現它 – soliman