0
我正在嘗試減少正在減慢速度的n + 1個查詢。在這個例子中,我有三個車型的客戶,地址和聯繫人:渴望加載具有多個條件的多個滑軌關聯
class Client < ApplicationRecord
has_many :addresses, as: :addressable
has_many :contacts
end
class Addresses < ApplicationRecord
belongs_to :addressable, polymorphic: true, optional: true
end
class Contacts < ApplicationRecord
belongs_to :clients
end
這裏的地址表是polymporphic而接觸 - 客戶關聯是一個一對多的。地址和聯繫人模型每個都有布爾屬性is_primary。
我想要做的是有一個客戶端索引頁面,其中有一個表格顯示客戶端名稱,主要聯繫人和主要地址。下面的SQL查詢實現了這一點,但我想知道如何最好的與ActiveRecord做到這一點。
SELECT clients.id, clients.name, contacts.first_name,
contacts.last_name, addresses.city, addresses.state,
addresses.country
FROM clients
INNER JOIN contacts ON contacts.client_id = clients.id
INNER JOIN addresses ON addresses.addressable_id = clients.id
WHERE contacts.is_primary = TRUE AND addresses.is_primary = TRUE
AND addresses.addressable_type = 'Client'
任何幫助將大大appreicated!