ruby-on-rails - Rails - 查找不存在另一个连接表的记录

标签 ruby-on-rails activerecord

我正在尝试编写一个 ActiveRecord 语句,我正在查找另一个表中不存在 id 的所有记录......

语法是什么?

 @events =  Event.find(:all, :include => :personals, 
                  :conditions => ["event.id != ? ", @user.personal.event_id ])

其中,personals 是一个连接表,其中包含 user_id 和 event_id....

所以我本质上是在试图找到用户没有添加到他们自己的个人记录集中的每个事件记录......

有没有更好的方法来写这个......不是空的还是什么?

最佳答案

其他答案不能很好地扩展数十万或更多记录。这是一个纯 SQL 解决方案。
rails 5+:

Event.left_outer_joins(:personals).where(personals: {event_id: nil})
这将检索所有没有关联个人的事件。
rails 3+:
Event.joins('LEFT JOIN personals ON event.id = personals.event_id').where('personals.event_id IS NULL')

关于ruby-on-rails - Rails - 查找不存在另一个连接表的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4818466/

相关文章:

ruby-on-rails - 在 Rails+Mongoid 中 find_or_create 创建的重复记录

ruby-on-rails - 查找在丰富的连接表 rails 中没有关联记录的所有记录

php - 没有 yii 的 Yii Activerecord

ruby - float 、小数或整数

ruby-on-rails - 如何使用 Rails 计算数据库中的连续元素?

ruby-on-rails - 无法连接到本地主机上的 rails docker 容器

sql - Rails,在最后一个之前找到对象,例如 -1

mysql - Ruby on Rails - Params 中没有数据可保存在数据库中

ruby-on-rails - 验证模型子类中的关联

ruby-on-rails - 更快的保存方法?