A есть 3 модели: трейлер, фильм, релиз. Трейлер принадлежит к фильму, а также к фильму has_many релизы и has_many трейлеры.Rails & Active Record: сложный SQL-запрос
Я хочу сделать первый трейлер каждого фильма, имеющего выпуск.
Мой подход заключается в создании области в Trailer.rb:
scope :released, -> {
joins(:movie).
where("trailers.movie_id = movies.id").
joins(:release).
where.not(:release => nil)
}
Так что я мог бы назвать Trailer.released, но мой запрос не работает, вместо возвращения коллекции, это возвращение активную запись связь.
- Куда я ошибаюсь по своему запросу?
- Есть ли более эффективный способ сделать это?
«вместо того, чтобы возвращать коллекцию, она возвращает активное отношение записи». Это одно и то же. – meagar
Я предполагаю, что я имею в виду сказать. Я ожидаю получить вывод объектов трейлера. Но вместо этого я получаю, поэтому я не знаю, где это происходит. –
@JacksonCunningham это скорее всего означает, что ваш SQL ошибочен. Чтобы убедиться, что отношение действительно, вызовите 'first', например, на нем. Он должен выплевывать либо объект, либо ошибку, говоря, что не так с запросом –