2011-04-07 2 views
1

레일스에서 ​​가장 좋지 않으므로 매우 간단 할 수 있습니다. 테이블이있는 데이터베이스가 있습니다 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 감독을 위해 죄송합니다.

+1

어떤 레일 버전입니까? – Preacher

+0

2.1.0 - 잊어 버려서 죄송합니다. 원래 질문에 추가되었습니다. – d3vkit

답변

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

+0

을 사용하고있는 것처럼 보일 수도 있습니다. 어쩌면 저는 밀도가 높습니다.하지만이 두 배열을 가진 배열을 제공하지는 않습니다. , 완결 된 항목과 진행중인 항목이있는 항목이 있습니까? 나는 그룹에 적어도 하나가 완료되었는지 그리고 진행중에 남아 있지 않은지를보기 위해 이것을 어떻게 사용 하는지를 보지 못했다. 내가 잘못 이해하면 알려줘! – d3vkit

+0

네, 단지 하나의 배열이되도록 변경했습니다. – s84

관련 문제