Если вы поместите это в одно условие поиска, это будет действительно сложно, и вы, возможно, захотите добавить больше фильтров позже, так что, возможно, вы захотите разбить его на результаты поиска.
@groups = []
groups = Group.find(:all, :joins => :orders, :conditions =>])
no_orders_in_progress = Group.find(:all, :jois => 'order', :conditions => ['status!=', 'in progress'], :limit => 5)
orders_completed = Group.find(:all, :joins => 'order', :conditions => ['status=?', 'completed'], :limit => 1)
@groups << orders_completed + no_orders_in_progress
Убедитесь, что ограничениесколько хотите.