簡體   English   中英

Rails可以一口氣抓住ActiveRecord多個關聯嗎?

[英]Rails have ActiveRecord grab more than one association in one go?

下面的問題很好地回答了使用Comment.includes(:user)一鍵捕獲ActiveRecord集合的關聯值。 如果您想一次獲得多個關聯,該怎么辦?

Rails可以一口氣捕獲所有需要的關聯嗎?

是將這些鏈接在一起的最佳方法,例如下面的Customer.includes(:user).includes(:sales).includes(:prices)還是有一種更簡潔的方法。

此外,當我在索引表上循環執行此操作時。 我可以在customer.rb模型上添加一個方法,以便可以調用@customers.table_includes等並具有

def table_includes
  self.includes(:user).includes(:sales).includes(:prices)
end

為了記錄,我測試了上面的內容,但由於它是集合上的一種方法(目前仍未弄清楚如何做到這一點),因此無法正常工作。

在回答這個問題時,我假設usersalesprices都是Customer關聯。

除了鏈接,您可以執行以下操作:

Customer.includes(:user, :sales, :prices)

在為此創建抽象方面,您確實有幾個選擇。

首先,您可以創建一個范圍:

class Customer < ActiveRecord::Base
  scope :table_includes, -> { includes(:user, :sales, :prices) }
end

或者,如果要使其成為一種方法,則應考慮使其成為類級別的方法,而不是實例級別的方法:

def self.table_includes
  self.includes(:user, :sales, :prices)
end

我會考慮創建此抽象的目的。 從長遠來看,像table_includes這樣的通用名稱可能不太友好。

暫無
暫無

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

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