5

레일 3, MongoidInherited Resources이 성공한 사람이 있습니까? 그것을 만들기위한 모든 팁? 나는 두 가지 보석을 모두 사용하고 싶습니다. 인덱스 작업에계승 된 리소스와 몽고이

undefined method `scoped' 

:

은 현재 내가으로 실행하고 있습니다.

감사합니다!


은 BTW 범위가 지정된 문제에 대한 해결 방법과 같이 수집을 무시하는 것입니다

class CampaignsController < InheritedResources::Base 

    def collection 
    @campaigns ||= end_of_association_chain.paginate(:page => params[:page]) 
    end 

end 

을하지만, 단지 mongoid를 사용하는 경우

답변

10

나는 더 총체적인 접근 방식을 찾고 무엇을 상속 된 리소스의 기본 컬렉션 동작을 덮어 쓰면됩니다. 기본 동작은 이것이다 : 당신은 심지어 페이지를 매기는 모든 페이지에서 무료로 페이지 매김을 가지고 컬렉션을 기본 수

module MongoidActions 
    def collection 
    get_collection_ivar || set_collection_ivar(end_of_association_chain.all) 
    end 
end 

InheritedResources::Base.send :include, MongoidActions 

다음 트릭을 할해야 다음, 말했다

https://github.com/josevalim/inherited_resources/blob/master/lib/inherited_resources/base_helpers.rb#L22-24

.

+0

감사합니다. 호세! 훌륭하게 작동합니다. 나는 상속 된 자원을 사랑하며, 몽고 이드를 열심히 노력했습니다. 즐겁게 놀기가 쉽기 때문에 기쁩니다. – Jonathan

+0

업데이트 : 지금까지 마스터에 통합되었습니다. 맞습니까? – bonhoffer

0

매우 유용한 게시물!

컨트롤러가 InheritedResource::Base에서 서브 클래 싱 할 수없는 경우 당신은이 작업을 수행 할 것이 아니라 당신과 같이 클래스의 방법 inherit_resources를 사용하는 것이다 방법 :

class MyController < AlreadyInheritedFromController 
    inherit_resources 
end 

위의 원숭이 패치가이 설정에서 작동하지 않는 것 .

키가 InheritedResources::Base.inherit_resources 인 것처럼 보이지만이 방법을 덮어 쓰는 올바른 방법이 확실하지 않습니다. 내가 잘못된 길을 가고 있다면 여기에서 정정하십시오.

4

또는 당신 Mongoid을 패치 할 수 있습니다 : 예상대로

module MongoidScoped 
    def scoped 
    all 
    end 
end 

Mongoid::Finders.send :include, MongoidScoped 

inherit_resources 방법 일을 할 것입니다.

2

다음은 InheritedResources::Base에서 상속 받고 inherit_resources 문을 사용하여 수행 한 작업입니다.

module InheritedResources 
    module BaseHelpers 
    def collection 
     get_collection_ivar || set_collection_ivar(end_of_association_chain.all) 
    end 
    end 
end 

당신은 일반적으로 초기화 (나는 config/initializers/mongoid.rb를 사용)로이 넣어.

Mongoid 2.0.0.beta.20inherited_resources 1.2.1이 좋습니다.

+0

'mongoid 2.0.0.rc7'도 마찬가지입니다. – Voldy

관련 문제