2012-12-23 1 views
2

OriginMongoid 사이의 문서는 Origin :: Queryable 객체를 사용하는 방법에 대해서는 명확하지 않습니다. Origin :: Queryable 객체를 빌드 한 다음 ModelName.where 메소드에 전달할 수 있습니까? 나는 다른 한편으로는 할 수없는 것처럼 보이는데, 할 수있는 완전히 합리적인 것처럼 보입니다. 나는 어떤 로직을 기반으로 Queryable을 생성 한 다음 그 모델의 where 절에 전달할 수있는 상황을 그림으로 그릴 수 있습니다. 이게 가능 한가요?을 추가 한 다음 Queryable을 작성한 다음 where 메소드에 전달할 수 있습니까?

이 내가 떠올있어 무엇 :

나는 그것이 작동합니다 생각 해요,하지만하지 않습니다 방법
class Criteria 
    include Origin::Queryable 
end 

criteria = Criteria.new 
criteria.where(category: 'vacuum').ne(dept: 'home') 
vacuums = Product.where(criteria) 

. Criteria 객체를 만든 후에는 무엇을해야합니까?

+0

왜 'Product.where'에서 기준을 작성하지 않습니까? 귀하의 응용 프로그램에 어떤 차이가 있습니까? (나는 또한 Origin이 무엇인지 알지 못합니다.) –

+0

Origin은 mongoid의 Criteria 엔진입니다. 3. Where 문을 사용하면 기준 개체가 작성됩니다. 나는 논리에 기초한 기준을 세우는 것이 편리하다고 생각하고 선택을 실행한다. 나는 C#에서 LINQ로 이것을 할 수 있다고 확신한다. – jcollum

답변

1

은 그래서 다음과 같이 작동

c = Criteria.new 
c = c.where(category: 'a').ne(dept: 'home') 

그럼 당신은 당신이 10gen 드라이버를 사용하는 경우 지금 당신은 당신이 다음과 같이 사용할 수 있습니다, 그것을 사용하여 기준 c 있습니다

collection.find(c.selector, c.options) 

또는 Moped를 사용하십시오 :

이 작업은 약간의 로컬 테스트를 수행했는데 나.

+0

moongoid를 사용하지 않고 mongoid 인스턴스를 통해 원본 쿼리를 사용할 수 있습니까? 설명처럼 http://stackoverflow.com/q/14763740/1888017 – Ph0en1x