sql - rails : get parent records having ZERO has_many associations

标签 sql ruby-on-rails ruby activerecord ruby-on-rails-4

这是我的联想:

class User < ActiveRecord::Base
  has_many :tickets
end

class Ticket < ActiveRecord::Base
  belongs_to :user
end

非常简单。我想要一个 User 模型的范围,它返回所有具有完全零关联票证的用户。

目前我大部分时间都在使用 Ruby 来做这件事:

def self.never_flown
  results = []
  find_each do |user|
    results << user if user.tickets.count == 0
  end
  results
end

... 这很糟糕,因为这不是 Ruby 的好用例。但我正在努力弄清楚如何使用 SQL 执行此操作。

谁能告诉我一个好的、干净的 SQL 解决方案?!

最佳答案

可能是这样的:User.includes(:tickets).where(tickets: {user_id: nil})

在一个范围内它会像 :without_tickets, -> { includes(:tickets).where(tickets: {user_id: nil}) }

关于sql - rails : get parent records having ZERO has_many associations,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25792899/

相关文章:

mysql - 为多个查询获取 rails ActiveRecord 而不是对象数组

ruby - 为什么 "foo"不是===到/foo/case匹配成功的时候?

mysql - 合并两个表中的多个列

python - 如何将字符串转换为数组并连接到sql中的另一个表

sql - 返回查询中未找到的值

ruby-on-rails - rails/ ruby : Is there a backbone gem in that doesn't generate coffeescript files?

ruby - Ruby 是否执行尾调用优化?

mysql - 使用 MySQL 选择排行榜

ruby-on-rails - Rails 通过迁移删除旧模型

ruby-on-rails - 如何在忽略 iPad 的情况下检测移动设备