Итак, давайте сделаем SQL-запрос с помощью этого механизма:
Допустим, я хочу найти человека в базе данных.Персона имеет имя и фамилию, а не просто «имя».Чтобы сделать его более сложным, имя и фамилия могут содержать много слов.
... поэтому у нас есть строка запроса из нашей поисковой системы, содержащая "Jo Svenda Schmidt", где "Jo Svenda" - это имя.
query = "Jo Svenda Schmidt".split
=> ["Jo", "Svenda", "Schmidt"]
query.permutation(query.length).collect { |x| x.join(" AND ") }.join(" OR ")
=> "Jo AND Svenda AND Schmidt OR Jo AND Schmidt AND Svenda OR Svenda AND Jo AND Schmidt OR Svenda AND Schmidt AND Jo OR Schmidt AND Jo AND Svenda OR Schmidt AND Svenda AND Jo"
Это почти то, что мы хотим, но не все.Нам нужно добавить имена столбцов и сгруппировать их.группировка может быть простой, просто ... join (") ИЛИ (") в и, а затем добавьте "(" в начало и ")" в конец результирующего запроса.
Но какдобавить красиво 'Firstname =' и 'Lastname =' или 'LIKE' к этому запросу?