2011-04-11 5 views
1

Rails 3에서 메소드 체인 방식을 사용하는 대신 쿼리를 실행하기 위해 데이터 구조를 전달할 수있는 deprint되지 않은 옵션이 있습니까? Rails 3.x에서 find 해시를 사용 하시겠습니까?

레코드 집합 제한하는 critieria의 집합을 나타내는 해시 (말을, 문서)를 고려 ..

{ 
    :conditions => { 
    :account_id => 2 
    }, 
    :limit => 5,   # page size 
    :offset => 5,  # (page-1) * page_size 
    :sort => 'id DESC' 
} 

이 같은 URL에서 올 수 있습니다 :

/documents.js?page_size=5&page=2&sidx=id&sord=DESC&filter[account_id]=2 

그리고 순차적 인 일련의 메소드 호출에 대한 해시 변환에서 주문 중요도의 문제를 피하려면 다음을 수행하십시오.

# which is 'right', or better ? 
Document.offset(5).where(:account_id => 2).limit(5) 
Document.where(:account_id => 2).limit(5).offset(5) 

해시를 걸어야하고 체인 메소드 호출을 생성해야한다면 HTTP 매개 변수 또는 JSON 객체에서 유추 된 일련의 쿼리 기준을 프로그래밍 방식으로 변환하는 것이 더 복잡 할 수 있습니다.

답변

1

당신은 고전 찾기 방법을 사용할 수 있습니다 :

Document.all :conditions => { :account_id => 2 }, :limit => 5, :offset => 5, :order => "id desc" 
+1

'3' – fl00r

+0

놓친 레일의 모든 __non-deprectated__ 옵션이있는 비 deprectated)하지만이 3.2 플러그인하고이를 지원하는 다음과 같은 것 방법, 그래서 딘은 해시를 통과하고 싶다면 어쨌든 이걸로 같이 갈 것입니다 –

+0

이 allgeged 플러그인 이름이나 개발자를 아십니까? 링크? –