Вы должны помнить, что where
превратится в SQL, и если вы хотите сравнить составные столбцы с поисковой строкой, вы должны сделать это на уровне базы данных / sql.
Теперь этовот где это сложно, потому что конкатенация в sql отличается в зависимости от вашей базы данных.
В Postgresql и Oracle вы могли бы написать что-то вроде:
where("(first_name LIKE :search) or (last_name LIKE :search) or (last_name || ',' || first_name LIKE :search)", :search => "%#{search}%"
К сожалению, Mysql не поддерживает стандартную конкатенациюоператор ||
, с mysql вы должны будете использовать concat
вместо:
where("(first_name LIKE :search) or (last_name LIKE :search) or (concat(last_name, ',', first_name) LIKE :search)", :search => "%#{search}%"