Rails 5.2:使用非属性参数调用的危险查询方法(其参数用作原始SQL的方法)

时间:2018-05-03 22:53:57

标签: ruby-on-rails rails-activerecord ruby-on-rails-5.2

我的模型的范围看起来像这样:

scope :indexed_by_array, lambda { |ids|
  order = sanitize_sql_array(
    ["position((',' || id::text || ',') in ?)", ids.join(',') + ',']
  )
  where(id: ids).order(order)
}

升级到Rails 5.2后,它会收到一系列弃用警告,la:

  

使用非属性参数调用的危险查询方法(其参数用作原始SQL的方法):" position((',' || id :: text || ',')',')"。 Rails 6.0中不允许使用非属性参数。不应使用用户提供的值调用此方法,例如请求参数或模型属性。可以通过将它们包装在Arel.sql()中来传递已知安全值。

如何使用Rails 5.2更改该范围以发挥作用?

0 个答案:

没有答案