Рубиновый путь:
Video.all.select {|v| v.campaigns.empty?}
Я думаю, что это более элегантно, если вы используете его отдельно в методе. Однако я бы порекомендовал написать для этого с именем scope . Опять же, верная версия Джеффса:
named_scope :campaign_less, :include => :campaigns, :conditions => ["campaigns.id IS ?", nil]
Кроме того, решение Джеффса, вероятно, более эффективно, поскольку оно более низкого уровня.