Balint Erdi wrote:
> On Sep 1, 5:42�pm, Jon Hope <[email protected]> wrote:
> 
>> What I want is to be able to return all the forked_stories and their
>> forked_stories for a given Story and I'm finding this very difficult
>> since they're all based on the same model. I keep running into dead
>> ends. If I can return them to a certain depth as well that'd be great,
>> so I've been trying to write a method that accepts a depth parameter but
>> the crazy loops are frying my brain.
> 
> As far as I can tell you have an algorithmical difficulty, not one
> related to Rails. To get back all the forked stories for a given story
> the following code snippet would do the job:
> 
>   def fork_tree
>     forked = forked_stories
>     forked_from_children = forked.inject([]) do |fstories, fstory|
>       fstories + fstory.fork_tree
>     end
>     forked + forked_from_children
>   end
> 
> (you can see the whole thing here: http://gist.github.com/179186)
> 
> Note1: This has been tested under Ruby, not Rails
> Note2: The method is badly named, since it just returns an array, not
> a tree-like structure of all the stories forked directly from the
> story or from its children, or grandchildren, etc.
> 
> Hope this helps,
> B�lint

Note 3: Unless the whole array has already been loaded into memory, 
that's horribly inefficient.  Nested sets are the way to go here.

Best,
--
Marnen Laibow-Koser
http://www.marnen.org
[email protected]
-- 
Posted via http://www.ruby-forum.com/.

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to