Sql 在活动记录查询中选择的数组条件

Sql 在活动记录查询中选择的数组条件,sql,ruby-on-rails,activerecord,Sql,Ruby On Rails,Activerecord,我希望能够在活动记录查询(Rails 2.3.12)的:select部分的MAX()sql调用中指定特定于用户的条件。不幸的是,安全字符串插值似乎不适用于:select条件。代码如下,是否有其他方法手动确保输入值是安全的?(应该如此,因为它们只是身份证,但你永远不能太确定。) 该查询旨在向我指示特定用户是否对站点中的特定项目具有显式权限。它将返回1(他们有)、0(他们没有,但其他人有)或nil(没有人有明确的权限)。结果表明,您可以手动使用sanitize\u sql\u数组方法来执行此操作:

我希望能够在活动记录查询(Rails 2.3.12)的:select部分的MAX()sql调用中指定特定于用户的条件。不幸的是,安全字符串插值似乎不适用于:select条件。代码如下,是否有其他方法手动确保输入值是安全的?(应该如此,因为它们只是身份证,但你永远不能太确定。)


该查询旨在向我指示特定用户是否对站点中的特定项目具有显式权限。它将返回1(他们有)、0(他们没有,但其他人有)或nil(没有人有明确的权限)。

结果表明,您可以手动使用sanitize\u sql\u数组方法来执行此操作:

: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])
: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])