使用Rails不是最好的,所以这可能非常简单。
我有一个包含表Groups and Orders
的数据库 - groups has_many orders, orders belongs_to groups.
订单有一个名为status
的字符串字段,可以是in progress, canceled, completed
。当订单被取消或完成时,该订单被视为“未进行中”。
我希望能够找到所有没有订单的团体,并且至少完成了一个订单。到目前为止,我还没有进展:
groups = Group.find(:all, :include => :orders, :conditions => ["orders.status != :in_progress", { :in_progress => Constant::IN_PROGRESS }])
有没有办法找到至少完成一个订单的组(没有简单地迭代这个数组并将它们挑出来)?
编辑:Rails版本2.1.0对于疏忽感到抱歉!
答案 0 :(得分: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
请确保将其限制为多少。