1

У меня есть модель с колонкой массива. Поэтому я в основном сохраняю языки как массив для Postgres. Например, driver_language =["English", "Spanish", "French"]Ruby on rails поиск массивов (активная запись)

В моем запросе я хочу выбрать все транспортные средства, в которых submitted_driver_language ["English", "Spanish"] включен в driver_language. Или хотя бы один элемент представленного массива driver_language включен в столбец driver_language, который является массивом. Как я могу добавить это условие к запросу ниже? Любая помощь будет принята

Vehicle.where(:vehicle_type => vehicle_type, :active => true, :company_activated => true, :capacity => number_of_people.to_i..Float::INFINITY) 
+1

ли вы хранить язык как [массив PostgreSQL] (http://www.postgresql.org/docs/9.1/static/arrays.html) или только в виде строки в базе данных. Вы не нормализуете свои данные, не создаете таблицу языков и не используете ассоциацию 'has_and_belongs_to_many'? – spickermann

ответ

0

Использование isl_table.

@vehicle = Vehicle.where(:vehicle_type => vehicle_type, :active => true, :company_activated => true, :capacity => number_of_people.to_i..Float::INFINITY) 

avehicle = @vehicle.arel_table 

@required_result = @vehicle.where(avehicle[:driver_language].matches('%#{"English", "Spanish"}%')) 
0

Как насчет регулярного выражения?

Vehicle.where('driver_language ~* ?', 'english|spanish') 
Смежные вопросы