我遇到的問題是散列中的值可能不是正確的數據類型,以便在where子句中成功(如一個示例)。如何將散列值轉換爲SQL查詢的適當數據類型
例如,可以在URL上傳遞過濾器參數:一些可能是字符串,一些數字,一些布爾值。最後的哈希值將是類似filter_parms:{id:「1」,active:「true」,name:「John」}等等。問題應該是顯而易見的:一切都被視爲一個字符串。我試圖找到一種方法來自動將值強制轉換爲正確的數據類型(例如「1」=> 1,「true」=> true),而且沒有循環和創建編碼混亂。
最終目標是能夠像這樣使用散列:Person.where(filter_parms)。這適用於String字段,但不適用於boolean和int。
我已經嘗試使用sanitize_sql_for_conditions,但其輸出完全匹配輸入數據類型而不作任何修改。
我想有些事情顯而易見,我很想念。謝謝你的幫助。
您可以查看'Model.columns'及其'#sql_type's以減少出錯的可能性。 –
我當然希望有一種方式可以通過某種由模型驅動的消毒劑驅動價值觀。不確定Rails如何處理髮布的表單數據。我假設在帖子中有一些內容明確地聲明瞭每個parm的數據類型。 – vicmorrowshead
@muistooshort - 如果只是至少要保持一致和徹底,我將簽出Model.columns ... – vicmorrowshead