簡體   English   中英

在Rails 5 中從另一個模型中選擇belongs_to 模型的有效方法?

[英]Efficent way to select belongs_to model from another Model, in Rails 5?

我有 2 個模型:

Contact -> has_many :messages 

Message -> belongs_to :contact

我想從我的消息表中選擇最后 10 個聯系人(作為對象數組,而不僅僅是 ID)

這是我的嘗試(並且效果很好):

Contact.where(id: Message.pluck(:contact_id).uniq.last(10))

但是還有另一種更好的方法或 rails 方法來做到這一點嗎?

編輯我想從我的消息表中選擇最后 10 個聯系人

我會在一個數據庫查詢中做到這一點。

Contact
  .distinct
  .joins(:messages)
  .order('messages.created_at DESC')
  .limit(10)

您可以嘗試以下查詢:

Contact.where(id: Message.distinct.order(created_at: :desc).limit(10).select(:id))

這將產生以下 SQL:

"SELECT  DISTINCT \"messages\".\"id\" FROM \"messages\"   ORDER BY \"messages\".\"created_at\" DESC LIMIT 10"

暫無
暫無

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

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