Okay this fixed it, but it doesn't seem super-elegant to me.
scope :unread_by, ->(u){
Notification.joins("LEFT JOIN notifications_users ON notifications.id = notifications_users.notification_id").
where("notifications_users.user_id <> ? OR notifications_users.user_id IS NULL", u.id).uniq
}
It works though. Yay - Thanks all for your help, it pointed me in the right direction.