0x
Applaus
Applaus
Ik klap!
Bram - vr 16 mrt 07 16:27
Is beantwoord
Ik heb een forum wat bestaat uit 3 tabellen:
- users (de gebruikers en auteurs van topics en reacties)
- topics (de topics in het forum)
- replies (de reacties op de topics)
Topic model:
has_many :replies
belongs_to :user
Reply model:
belongs_to :topic
belongs_to :user
User model:
has_many :topics
has_many :replies
Op de topic pagina wil ik het topic, de bijbehorende reacties en van beide (topic, reacties) de gegevens van de auteur (een user). Om het geheel niet slopend voor de db-server te maken wil ik niet elke keer een query draaien.
Het moet zoiets worden:
@topic = Topic.find(params[:id], :include => [‘user’, ‘replies’, ‘replies.user’])
Maar dit werkt (natuurlijk) niet…
Welcome to Holland On Rails
This weblog is the official Ruby techblog from the guys at Holder, a Ruby development company. Holder is also the company behind the RubyAndRails Europe Conference in Amsterdam.Recente Jobs
Bekijk alle jobs »»
Gereedschapskist
Onmisbare tools vooriedere developer!
- Ruby On Rails
Framework voor de web 2.0 developer. Eindelijk vooruitgang! - TextMate
Editor for true pro's
Typ, tab, top :-)
Nee, niet voor Win. - Made On A Mac
En nou is het over met die saaie grijze Windows bak van je!
Auteurs op deze site
Chris Obdam
'Less is more' evangelist, past dit ook dagelijks toe op zijn tandenborstel.Chiel Wester
Snelheidswonder op Ruby wielen. Leuk om mee te pair-programmen ;-)
Justin Halsall - za 20 mei 06 18:30
Misschien slim om de fotos even met “rubyenrails” te taggen, dan kun je via http://flickr.com/photos/tags/rubyenrails alle foto’s bekijken.
Chris Obdam - zo 25 mrt 07 23:57
Way cool Bram! Deze kon ik nog niet!
Bram - zo 25 mrt 07 17:22
Heb inmiddels het antwoord gevonden:
:include => [‘user’, ‘replies’, {:replies => ’user’}]
Hij pakt nu de user van het topic, de reacties en de user van alle reacties.
Als je dit weg laat dan zoekt hij bij elke reactie de user op, dat lijkt me niet zo slim. Heb je bijvoorbeeld een pagina met een topic + 10 reacties dan gebruikt hij 11 queries; dat zijn er 10 te veel :-)
Stephan Kaag - ma 19 mrt 07 11:34
Eventueel zou je je query zelf uit kunnen scrijven door middel van Topic.find_by_sql maar ik zou persoonlijk kiezen voor de oplossing van Chris.
Chris Obdam - vr 16 mrt 07 16:37
Ten eerste, alles 1 één query hoeft niet per definitie sneller te zijn.. Ik zou alleen include replies doen, dan worden de users vanzelf geladen wanneer deze opgevraagd worden. Merk je nix van qua performance! Maar net zo netjes..
Plaats je reactie