我一直在尋找最好的方法來完成相當一段時間的平庸結果,所以我決定在這裏問一下。在Rails中獲取最後一條相關記錄
的情況如下:我有三個型號,任務,用戶和評論,基本上是這樣的:
class Task < ActiveRecord::Base
belongs_to :user
has_many :comments
end
class Comment < ActiveRecord::Base
belongs_to :user
belongs_to :task
end
class User < ActiveRecord::Base
has_many :tasks
has_many :comments
end
我試圖輸出任務的清單(假設最後10這個問題的目的),以及相關的最後評論爲每個任務和它的作者(用戶模型)與最少查詢可能。
謝謝
UPDATE:
class Task < ActiveRecord::Base
belongs_to :user
has_many :comments
has_one :last_comment, -> { order 'created_at' }, class_name: "Comment"
end
,然後取這樣的評論:
tasks = Task.joins(last_comment: :user)
.includes(last_comment: :user)
.order('tasks.created_at DESC').limit(10).load
因此該解決方案是這樣的,我結合由Blue史密斯和harigopal解決方案
其中產生只有一個查詢,這正是我是looki ng for!謝謝!
我不認爲我的理解正確,所以我發佈了有關此評論的進一步解釋:這不是我關心的任務限制,數字完全不相關,我試圖以某種方式來模擬場景,其中任務只有**一條評論**所以問題是如何**加載最後一條相關評論** –