Frage

OK, ich habe mit einigen der eifrigen Laden Dinge herum spielen, und habe 2 Modelle so etwas wie:

Class Recipe < ActiveRecord::Base
    belongs_to :cookbook
    has_many   :recipetags
end

und

Class Cookbook < ActiveRecord::Base
    has_many :recipes, :include => [:recipetags]
end

Welche funktioniert gut aus, wenn ich ein Kochbuch finden, dann lädt ich eifrig die Rezepte, und in den Rezepten eifrig Last drehen: recipetags:

cb = Cookbook.find(10590, :include => [:recipes])

Aber was will ich auch tun ist, wenn ich ein Rezept zu öffnen, haben sie ziehen in alle automatisch eifrig Verbände ist - im Grunde was ich tun möchte:

rec = Recipe.find(123)

und hat es eifrig Last des:. Recipetags in diesem Fall auch

Ich weiß, dies trivial erscheint, aber in Wirklichkeit habe ich etwa 4-5 Assoziationen auf Rezept, zeige ich sie nur nicht hier, und anstatt auf die explizit tun: include auf jedem Fund nenne ich es möchte nur passieren. Ich gehe davon aus ich kann Recipe.find außer Kraft setzen es in dem Rezept Modell zu tun, aber frage mich, ob es ein sauberer Weg war ....

War es hilfreich?

Lösung

Ich habe mit default_scope es tun bei ausgewählten Modellen, wo ich will eifrig Last immer:

class Post < ActiveRecord::Base
  has_many :comments
  default_scope :include => :comments, :order => ["title ASC"]
  ...
end

Andere Tipps

Sie sollten Lage sein, dies mit Scopes zu tun, aber ich verstehe, dass es eine Reihe von möglichen Fehlern mit, dass war, hoffentlich sie nun alle fest sind.

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