Im пытается построить расширенный поиск искателя для моей модели кандидата. Предполагает, что у него есть пары полей + несколько ассоциаций, таких как has_many: languages
& has_many: skills
. Теперь я создаю запрос, как это:Расширенный поиск по нескольким ассоциациям в Rails
query = Candidate.select("*")
if position_name
query = query.where('position_name LIKE ? OR position_name IS NULL',"%#{position_name}%")
end
if salary
query = query.where('salary <= ? OR salary IS NULL',salary)
end
и так далее ...
Теперь я хочу, чтобы добавить более продвинутые условия, как найти пользователей, которые имеют только такие навыки, как PHP
и Java
(так возврат только те пользователи, которые имеют как навыки)
Это работает, но только тогда, когда я вставляю OR
query = query.joins(:skills)
query = query.where('`skills`.`name` = ? OR `skills`.`name` = ?',"Java","PHP")
Дополнительно Я бы хотел, чтобы он тоже был для языков (плюс, язык language.name
& language.level
)
Может кто-то указывает мне, в каком направлении смотреть? А также как построить такое условие, когда я могу использовать несколько навыков или несколько языков?
Вы можете серьезно рассмотреть вопрос об использовании поисковой системы, как [Мышление сфинкса] (http://freelancing-god.github.com/ts/en/), так как он делает такие задачи, как это один тривиальный, а также делает поиск пылает быстро. – iwasrobbed
Я попробую это. Благодарю. – Johny