5

Rails 3、Mongoid、および継承されたリソースを機能させることに成功した人はいますか?それを実現するためのヒントはありますか?両方の宝石を使いたいです。

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

undefined method `scoped'

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

ありがとう!


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

class CampaignsController < InheritedResources::Base

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

end

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

4

4 に答える 4

10

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

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

于 2011-01-29T08:31:54.727 に答える
4

または、Mongoidにパッチを適用することもできます。

module MongoidScoped
  def scoped
    all
  end
end

Mongoid::Finders.send :include, MongoidScoped

これにより、inherit_resourcesメソッドが期待どおりに機能します。

于 2011-02-08T13:11:28.783 に答える
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フレンドリー。

于 2011-02-21T15:23:47.320 に答える
0

とても参考になった投稿です!

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

class MyController < AlreadyInheritedFromController
   inherit_resources
end

上記のモンキーパッチは、この設定では機能しないようです。

キーのように見えますが、InheritedResources::Base.inherit_resourcesこのメソッドを上書きする正しい方法がわかりません。私がここで間違った道を進んでいる場合は訂正してください。

于 2011-02-04T03:57:52.517 に答える