我有以下的範圍內我的模型裏面:重寫範圍使用ActiveRecord傭工
scope :by_attributes, ->(names) {
attribute_ids = ReferralPartnerAttribute.where(name: names).pluck(:id)
if attribute_ids.any?
where(
"ARRAY[?] <@ (
SELECT array_agg(referral_partner_attribute_id)
FROM referral_partner_referral_partner_attributes
WHERE referral_partner_referral_partner_attributes.referral_partner_id = referral_partners.id)", attribute_ids
)
else
none
end
}
我怎樣才能重寫了它更多的ActiveRecor方式?這可能嗎?
可以共享表之間存在什麼樣的關聯在這裏使用?另外,我不確定這是否符合您的想法。這聽起來像你想要referral_partners具有匹配名稱的referral_partner_attributes。但是我相信如果你傳遞任何存在的屬性,這將返回* all * referral_partners。 –