我有一个看起来像这样的模型的范围:
scope :indexed_by_array, lambda { |ids|
order = sanitize_sql_array(
["position((',' || id::text || ',') in ?)", ids.join(',') + ',']
)
where(id: ids).order(order)
}
升级到 Rails 5.2 后,它会收到大量弃用警告,例如:
使用非属性参数调用的危险查询方法(其参数用作原始 SQL 的方法):“position((',' || id::text || ',') in ',')”。Rails 6.0 将不允许使用非属性参数。不应使用用户提供的值(例如请求参数或模型属性)调用此方法。可以通过将已知安全值包装在 Arel.sql() 中来传递它们。
如何更改该范围以使用 Rails 5.2 打球?