Rails 5.2: опасный метод запроса (метод, аргументы которого используются как необработанный SQL), вызываемый с аргументом (аргументами) без атрибута

У меня есть прицел на модели, который выглядит так:

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?


person okay56k    schedule 03.05.2018    source источник
comment
Решение такое же, как и дубликат: ...order(Arel.sql(order)).   -  person mu is too short    schedule 04.05.2018