Data Explorer: `int_list` заменяет первый элемент на 0

Не уверен, является ли это ошибкой или я что-то делаю неправильно, но кажется, что первый элемент массива int_list всегда заменяется на 0 в запросе к исследованию данных.

Например:

-- int_list :categories = "3, 5, 6"

превращается в [0, 5, 6]

Посмотрите на:

Если выполнить это в консоли, получается ожидаемый результат:

string = "3,5,6"
value = string.split(',').map { |s| s.downcase == '#null' ? nil : s.to_i }
=> [3, 5, 6]

Вы можете воспроизвести проблему с помощью этого запроса:

-- [params]
-- int_list :categories = "3, 5, 6"

SELECT *
FROM topics 
WHERE topics.category_id = ANY (ARRAY [ :categories ]  )

Чтобы вызвать ошибку (чтобы увидеть сообщение об ошибке), просто удалите закрывающую скобку, например:

-- [params]
-- int_list :categories = "3, 5, 6"

SELECT *
FROM topics 
WHERE topics.category_id = ANY (ARRAY [ :categories   )
PG::SyntaxError: ERROR:  syntax error at or near ")"
LINE 12: WHERE topics.category_id = ANY (ARRAY [ 0,5,6   )
                                                         ^

(Обратите внимание на массив)

Похоже, что при установке значения по умолчанию для параметра int_list таким образом:

-- int_list :categories = "3, 5, 6"

выполняется следующее:

'"1'.downcase.to_i

Это вернёт 0.

Вы можете обойти эту проблему, убрав кавычки из параметра по умолчанию:

-- int_list :categories = 3, 5, 6

Это значение всё равно интерпретируется как строка перед разбиением на массив. Возможно, плагину следует удалять внешние кавычки, если они добавляются к строковому вводу.

Спасибо, Саймон! :smiley:

Я был уверен, что уже пробовал это… и, посмотрев ещё раз, я вижу, что изменение параметров по умолчанию в теле и нажатие на save and run не дают эффекта — либо нужно обновить страницу после сохранения, либо изменить значения в поле для этого параметра (что я совершенно забыл).

Кстати, я считаю, что с параметрами действительно сложно работать. Не стоит ли нам перенести это в полноценный UX вместо магических комментариев @riking?

Да, это вполне логично. Магические комментарии оптимизировались для минимизации количества миграций БД, исходящих из плагинов, что в наши дни уже не является такой большой проблемой.