我的一些類:Mongoid預先加載嵌入文檔
class User
embeds_many :notifications
field :first_name
field :last_name
def name{ "#{first_name} #{last_name}" }
class Notification
embedded_in :user
belongs_to :sender, class_name: "User", inverse_of: nil
現在,在我的意見,我實現了一個較小的郵箱系統通知。但是,它目前打N +數據庫1次:
<% current_user.notifications.sort{...}.each do |notif|%>
...
<%= notif.sender.name if notif.sender %>
這裏的問題是,這將導致數據庫N
命中notif.sender.name
。我能以某種方式預加載/急切加載嗎?類似於current_user.notifications.includes(:sender)
(但可以工作:D)
我目前只需要發件人姓名。
哈哈,其實我的問題是風馬牛不相及。我有一個奇怪的錯誤「錯誤的參數數量......」:工作查詢是'current_user.notifications.includes(:sender).to_a.sort'。 'to_a'在這裏很重要! – 2015-04-07 23:34:23
@CyrilDD它可能執行得更好,如果你想在你的查詢中包含排序,而不是在本機數組上進行ruby排序 – ericraio 2015-04-30 02:54:58