Я делаю вложенный поиск, и, хотя он всегда возвращает правильную информацию, он возвращает три копии каждой записи !!Rails Database Вложенный поиск Confusion
Я хочу искать пользователей на основе их имени пользователя, имени, хобби или типа хобби. У каждого пользователя есть нулевое, одно или много хобби.
Это мой запрос:
def self.search(search)
query = "%#{search}%"
if search
joins(:hobbies)
.where("user_name like ? or first_name like ? or hobbies.name like ? or hobbies.type like ?", query, query, query, query)
else
self.all
end
end
Если искать по названию хобби или вид хобби, я получаю правильный ответ.
Но если я ищу по имени пользователя или имени, я получаю три клона одной и той же записи! Почему это так?
Какой результат вы получаете, когда используете 'includes' вместо' joins'? – dp7
Хорошо, что сработало. Но как получилось? – ineedahero
'includes' делает Left Out Join, поэтому для каждого условия соответствия в качестве результата будет возвращена только одна строка. Я распространил его как ответ. – dp7