我正在尝试编写一个 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/