Rails 3:Arel for NOT EXISTS?

你如何在Arel写一个NOT EXISTS ? 我在将此查询转换为Arel时遇到问题:

 SELECT * FROM deals WHERE NOT EXISTS ( SELECT 1 FROM reward_deals WHERE reward_deals.deal_id = deal.id AND NOT ( reward_deals.awarding_type = 'deal' AND reward_deals.deal_id = reward_deals.awarding_id ) ) 

这是答案,名字很奇怪,因为我不知道如何给出一个对我不熟悉的域名。

 deals = Deal.arel_table reward_deals = RewardDeal.arel_table awarding_condition= reward_deals[:awarding_type].eq('deal')\ .and(reward_deals[:deal_id]\ .eq(reward_deals[:awarding_id])) reward_deals_condition= reward_deals[:deal_id].eq(deals[:id])\ .and(awarding_condition.not) Deal.where(RewardDeal.where(reward_deals_condition).exists.not)