簡體   English   中英

Rails ActiveRecord查詢與has_many所屬關系到關聯

[英]Rails activerecord query with has_many belongs_to association

我有兩個ActiveRecord模型: UserCourse 關聯如下:

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 }

但是我對其表現感到懷疑。 因此,尋找性能良好的最佳解決方案。

提前致謝。

要獲取每個用戶的最后課程,您可以執行以下操作:

courses = []
User.includes(:courses).find_each { |u| courses << u.courses.last }

我仍然認為僅接受2個查詢可能會更容易。 但是我決定在2個查詢中查找之前找到的文章。 這可以工作,但會增加很多復雜性。

Rails協會has_one最新記錄

在2個請求中:

User.select(:id).includes(:courses).each { |u| u.courses.last }

如果您的桌子太大,則不起作用

另一種方法是1個SQL查詢

Course.all.group_by(&:user_id).map { |_k,courses| courses.last }

這樣,您可以找到用戶的最后一門課程

User.find(1).courses.order(name: :ASC).last

如果您想要一個數組:

courses = []

User.each do |u|
   courses << u.courses.order(name: :ASC).last
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM