跳至內容 跳至搜尋

UnknownAttributeReference 在將未知且可能有風險的值傳遞至查詢方法時引發。例如,將非欄位名稱值傳遞至關聯的順序方法可能會導致此例外狀況。

在解決此例外狀況時,在將使用者提供的值傳遞至查詢方法時,應小心避免 SQL 注入漏洞。已知安全的數值可透過包裝在 Arel.sql 中來傳遞至查詢方法。

例如,下列程式碼會引發此例外狀況

Post.order("REPLACE(title, 'misc', 'zzzz') asc").pluck(:id)

可透過將已知安全的字串包裝在 Arel.sql 中來達成預期結果

Post.order(Arel.sql("REPLACE(title, 'misc', 'zzzz') asc")).pluck(:id)

再次強調,在將使用者提供的數值(例如要求參數或模型屬性)傳遞至查詢方法時,不應使用此類解決方法。