ruby-on-rails - Rails 3 : Arel for NOT EXISTS?

标签 ruby-on-rails ruby-on-rails-3 activerecord arel

您如何在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)

关于ruby-on-rails - Rails 3 : Arel for NOT EXISTS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7152424/

相关文章:

javascript - Uncaught ReferenceError : date is not defined

html - 居中引导 3 导航栏

ruby - .nil?, .blank? 之间的区别?和.empty?

ruby-on-rails - rails : save doesn't update record if called twice?

ruby-on-rails - 用于过滤嵌套 has_many 关联的 ActiveRecord 查询

ruby-on-rails - RSpec 的 Rails 帖子抛出 "no route matches"

mysql - 如何根据查询插入多行?

ruby-on-rails-3 - 如果 bool 值为 false,则获取复选框以呈现为选中状态

ruby - 如何对命名空间中的模型执行 has_many

ruby-on-rails - 在此操作中多次调用渲染和/或重定向。