2011-07-06 76 views
1

我希望能夠在活動記錄查詢(Rails 2.3.12)的:select部分中的MAX()sql調用中指定用戶特定的條件。不幸的是,安全字符串插值似乎不適用於:select條件。代碼如下,是否有其他方式來手動確保傳入的值是安全的? (他們應該是因爲他們僅僅是ID的,但你不能太肯定的。)在活動記錄查詢中選擇的數組條件

:select => ["`component_instances`.*, max(`users`.id = ? AND `permissions`.view = 1) AS user_view, max(`users`.id = ? AND `permissions`.edit = 1) AS user_edit", user.id] 

查詢旨在指示我,如果一個特定的用戶在該網站的特定項目的明確許可。它會返回1(他們),0(他們不會但其他人)或零(沒有人有明確的權限)。

回答

2

事實證明,你可以手動使用sanitize_sql_array方法來做到這一點:

:select => sanitize_sql_array(["`component_instances`.*, max(`users`.id = ? AND `permissions`.view = 1) AS user_view, max(`users`.id = ? AND `permissions`.edit = 1) AS user_edit", user.id, user.id])