質問

誰もがレール3を持っていることに成功しましたか? マンゴイド継承されたリソース 働く?それを実現するためのヒントはありますか?私は両方の宝石を使いたいです。

現在、私は遭遇しています:

undefined method `scoped'

インデックスアクションについて。

ありがとう!


ところで、スコープされた問題の回避策は、次のようなコレクションをオーバーライドすることです。

class CampaignsController < InheritedResources::Base

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

end

しかし、私はもっと全体的なアプローチを探しています

役に立ちましたか?

解決

Mongoidのみを使用している場合、すべきことは、継承されたリソースのデフォルトの収集動作を上書きすることです。デフォルトの動作はこれです:

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

とはいえ、以下はトリックを行う必要があります。

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

InheritedResources::Base.send :include, MongoidActions

コレクションをデフォルトでパジネートし、すべてのページで無料でページネーションを行うこともできます。

他のヒント

または、マンゴイドにパッチを当てることができます:

module MongoidScoped
  def scoped
    all
  end
end

Mongoid::Finders.send :include, MongoidScoped

これは作ります inherit_resources メソッドは予想どおりに機能します。

これが私が継承の両方をカバーするためにしたことです 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 フレンドリー。

非常に役立つ投稿!

コントローラーをからサブクラス化できない場合は、これをどのように行いますか InheritedResource::Base むしろ、クラスメソッドを使用する必要があります inherit_resources, 、 そのようです :

class MyController < AlreadyInheritedFromController
   inherit_resources
end

上記のモンキーパッチは、このセットアップでは機能しないようです。

鍵はそうかもしれないようです InheritedResources::Base.inherit_resources しかし、この方法を上書きする正しい方法については不明です。ここで間違った道を歩んでいる場合は修正してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top