У меня есть две модели ActiveRecord: Пользователь и Курс. Которые связаны следующим образом:Rails activerecord query with has_many принадлежит_от ассоциации
class User < ActiveRecord::Base
has_many :courses
end
class Course < ActiveRecord::Base
belongs_to :user
end
Теперь мой вопрос: как я могу получить последний курс каждого пользователя?
Я попробовал следующее:
courses = Array.new
User.find_each { |u| courses << u.courses.last }
Но я под сомнение его производительность. Поэтому поиск лучшего решения с хорошей производительностью.
Заранее спасибо.
вам нужно один SQL-запрос, чтобы получить последние курсы всех пользователей сразу, я думаю .. я прав @Ganesh – illusionist
Да, для этого мне нужен один SQL-запрос. @illusionist –
Вы можете решить это, используя соединения и прочее с помощью raw SQL, но я не смог его решить с помощью методов activerecord. Я думаю, что использование 'include' и принятие всего 2 sql-запросов - лучшее решение, поскольку оно менее сложное, чем способ SQL. – Albin