PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Изпращане на масив от стойности към sql заявка в ruby?

PostgreSQL поддържа стандартни SQL масиви и стандартния any op (...) синтаксис:

Това означава, че можете да изградите SQL по този начин:

where name ilike any (array['%Richard%', '%Feynman%'])

Това е хубаво и кратко, така че как да накараме Rails да изгради това? Това всъщност е доста лесно:

Model.where('name ilike any (array[?])', names.map { |s| "%#{s}%" })

Не е необходимо ръчно поставяне в кавички, ActiveRecord ще преобразува масива в правилно кавиран/екраниран списък, когато запълни ? заместител в.

Сега просто трябва да създадете names масив. Нещо просто като това трябва да свърши работа:

fields = params.keys.select { |k| k.to_s =~ /\Afield\d+\z/ }
names  = params.values_at(*fields).select(&:present)

Можете също така да конвертирате единичен 'a b' въвежда в 'a', 'b' чрез хвърляне на split и flatten в микса:

names = params.values_at(*fields)
              .select(&:present)
              .map(&:split)
              .flatten


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да добавя PostgreSQL източник на данни към WildFly 9.0?

  2. Стимулиране на производителността за PostgreSQL с HAProxy

  3. psycopg2 + pgbouncer. Асинхронен режим с грешка в gevent

  4. Моята PostgreSQL база данни е извън дисковото пространство

  5. Свързване към RDS Postgres от отдалечена машина