5

誰もがRails 3,MongoidInherited Resourcesが成功していますか?それを起こすためのヒント?私は両方の宝石を使いたいです。インデックス・アクションで継承されたリソースとモンゴイド

undefined method `scoped' 

は現在、私はに実行しています。

ありがとうございます!


ところでスコープの問題の回避策はそうのようなコレクションを上書きすることです:

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

ありがとうございました!よく働く。私はInherited Resourcesを愛し、私はMongoidを試してみたいと熱望していました。 – 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

関連する問題