У меня есть приложение ruby с запросом к postgresql, и у меня проблема со списком параметров.У меня есть номера идентификаторов, которые мне нужно искать в базе данных.
Ошибка, которую я получил о типе строки / целочисленного параметра.Как правильно установить параметры запроса для postgresql?
ActionView::Template::Error (PG::InvalidTextRepresentation: ERROR: invalid input syntax for integer: "91,147,149,150,152,140,160,121,125,161"
LINE 1: ...= '2018-05-19 21:59:59.999999') AND (items.id IN ('91,147,14...
^
: SELECT "items".* FROM "items" INNER JOIN taggings ON taggings.taggable_id = items.id INNER JOIN tags on taggings.tag_id = tags.id WHERE "items"."venue_id" = $1 AND "items"."is_active" = $2 AND "items"."category_id" IN (SELECT "categories"."id" FROM "categories" INNER JOIN "report_categories" ON "categories"."id" = "report_categories"."category_id" WHERE "report_categories"."report_id" = $3) AND ("items"."state" IN ('queued','published','archived')) AND (found_at >= '2018-05-01') AND (found_at <= '2018-05-19 21:59:59.999999') AND (items.id IN ('91,147,149,150,152,140,160,121,125,161'))):
Как вы можете заметить, место, где отображается ошибка items.id IN ('91,147,149,150,152,140,160,121,125,161'))
if report_tags
tolist = JSON.parse(report_tags).join(',').gsub(/"/, '').sub!(/^,/, '')
scoped = scoped.joins("INNER JOIN taggings ON taggings.taggable_id = items.id INNER JOIN tags on taggings.tag_id = tags.id").where("items.id IN (?)", tolist)
end
Благодаря Харальду, мне просто нужно было немного обновить егонемного, и это прекрасно работает!
if report_tags
tolist = JSON.parse(report_tags).reject { |e| e.to_s.empty? }
scoped = scoped.
joins("INNER JOIN taggings ON taggings.taggable_id = items.id INNER JOIN tags on taggings.tag_id = tags.id").
where("tags.id IN (?)", tolist)
end