まず、次のようにあなたがあなたの関係を設定していることを確認:
class Ad < ActiveRecord::Base
belongs_to :ad_group, inverse_of: :ads
end
class AdGroup < ActiveRecord::Base
belongs_to :campaign, inverse_of: :ad_groups
has_many :ads, inverse_of :ad_group
end
class Campaign < ActiveRecord::Base
belongs_to :client, inverse_of: :campaigns
has_many :ad_groups, inverse_of :campaign
end
class Client < ActiveRecord::Base
has_many :campaigns, inverse_of :client
end
使用して参加して、あなたが望むすべての場合摘み取りますクライアントIDと効率的なSQLです:
Client.joins(campaigns: {ad_groups: :ad}).where(
ads: { id: some_id }).pluck('clients.id').first
クライアント全体と効率的なSQLが必要な場合は、
Client.joins(campaigns: {ad_groups: :ad}).where(ads: { id: some_id }).first
client_id = ad.adgroup.campaign.client.client_id? – Bjoernsen