我的模型的范围看起来像这样:
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更改该范围以发挥作用?