2011-04-07 30 views
1

没有最好使用Rails所以这可能是很简单的。 我有表Groups and Orders数据库 - groups has_many orders, orders belongs_to groups.订单有一个名为status一个字符串字段,它可以是in progress, canceled, completed。订单在被取消或完成时被视为“未进行中”。 我希望能够找到所有没有进行订单的组,并且至少完成了一个订单。到目前为止,我有在进步没有:的Rails找到至少一个“订单”状态为“已完成”

groups = Group.find(:all, :include => :orders, :conditions => ["orders.status != :in_progress", { :in_progress => Constant::IN_PROGRESS }]) 

有没有办法找到组与至少一个顺序完成(不只是遍历数组和挑选出来)?

编辑:Rails的2.1.0版本,很抱歉给您监督!

+1

什么Rails版本? – Preacher 2011-04-07 00:34:12

+0

2.1.0 - 对不起,忘了,添加到原来的问题。 – d3vkit 2011-04-07 02:01:15

回答

0

如果你把这个变成一个发现它的条件将是非常复杂的,你可能会想添加更多的过滤器以后这样可能需要将其打入到发现。

@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 

请务必限制它,无论你想要多少。

+0

如果使用R3然后让我知道,我将发布的语法为,但它看起来像你正在使用 s84 2011-04-07 00:48:17

+0

也许我只是密集,但没有这只是给我在这两个数组的数组,一个已完成项目,另一个正在进行项目?我没有看到如何使用它来查看一个组是否至少有一个已完成,还有一个尚未完成。让我知道如果我误解了! – d3vkit 2011-04-07 18:06:47

+0

是的,我改变它,所以它只是一个数组。 – s84 2011-04-07 18:56:30

相关问题