Internetbureau Holder
0x
Applaus

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…

Lamp_off

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.

Pencil

Chris Obdam - zo 25 mrt 07 23:57

Way cool Bram! Deze kon ik nog niet!

Lamp_off

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 :-)

Lamp_off

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.

Pencil

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







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 voor
iedere 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 ;-) Recommend Me

Stephan Kaag

Het eerste Rails coreteam- member uit Nederland? Rails evangelist van het eerste uur.

Paul Engel

Én Rails programmeren én interfaces designen? Je zou hem superman kunnen noemen..

Dax Huiberts

Official Zip-Programmer, skinny code is helemaal zijn ding. Haalt meer code weg dan dat er bij komt.

Freek Monteban

Het nieuwste telg uit het Holland on Rails nest! Hij doet niets anders meer!

Johan Vermeulen

De stylesheet-koning uit de kop van Noord-Holland!