【问题标题】:Array conditions for select on Active Record query在 Active Record 查询中选择的数组条件
【发布时间】:2011-07-06 03:46:45
【问题描述】:

我希望能够在活动记录查询 (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(他们没有但其他人有)或 nil(没有人有明确的权限)。

【问题讨论】:

    标签: sql ruby-on-rails activerecord


    【解决方案1】:

    原来你可以手动使用 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])
    

    【讨论】:

      猜你喜欢
      • 2015-07-07
      • 2011-01-28
      • 1970-01-01
      • 2013-06-27
      • 2012-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多