Frage

Hatte jemand Erfolg mit Rails 3? Mongoid Und Geerbte Ressourcen Arbeiten?Irgendwelche Tipps, um dies zu erreichen?Ich würde gerne beide Edelsteine ​​verwenden.

Momentan stoße ich auf Folgendes:

undefined method `scoped'

Zu Indexaktionen.

Danke!


Übrigens besteht eine Problemumgehung für das bereichsbezogene Problem darin, die Sammlung wie folgt zu überschreiben:

class CampaignsController < InheritedResources::Base

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

end

Aber ich suche nach einem ganzheitlicheren Ansatz

War es hilfreich?

Lösung

Wenn Sie nur Mongoid verwenden, sollten Sie das Standardsammlungsverhalten in Inherited Resources überschreiben.Das Standardverhalten ist folgendes:

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

Das heißt, Folgendes sollte den Zweck erfüllen:

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

InheritedResources::Base.send :include, MongoidActions

Sie können die Sammlung sogar standardmäßig paginieren lassen und die Paginierung auf allen Seiten kostenlos nutzen.

Andere Tipps

Alternativ können Sie Mongoid patchen:

module MongoidScoped
  def scoped
    all
  end
end

Mongoid::Finders.send :include, MongoidScoped

Das wird machen inherit_resources Methode funktioniert wie erwartet.

Hier ist, was ich getan habe, um beides abzudecken, von dem ich geerbt habe InheritedResources::Base und nutzen inherit_resources Stellungnahme.

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

Normalerweise geben Sie dies in einen Initialisierer ein (ich verwende config/initializers/mongoid.rb).

Macht Mongoid 2.0.0.beta.20 Und inherited_resources 1.2.1 freundlich.

Sehr hilfreicher Beitrag!

Wie würden Sie dies tun, wenn von Ihrem Controller keine Unterklasse erstellt werden kann? InheritedResource::Base sondern Sie müssen die Klassenmethode verwenden inherit_resources, etwa so:

class MyController < AlreadyInheritedFromController
   inherit_resources
end

Der obige Monkey-Patch scheint in diesem Setup nicht zu funktionieren.

Es sieht so aus, als wäre es der Schlüssel InheritedResources::Base.inherit_resources Ich bin mir jedoch nicht sicher, wie ich diese Methode richtig überschreiben soll.Bitte korrigieren Sie, wenn ich hier auf dem falschen Weg bin.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top