While my hierarchical-collection tag for sure works, because I pulled it out of 
a working application, and the acts_as_tree recipe works, because I 
specifically went through the steps, I did not test the suggestion presented 
below (which is why I did not yet add it to the recipe).  Will try to do that 
in coming days.  Parent id is most definitely required to make act_as_tree 
work, but it refers to a question (it's parent), not an answer.  The way I 
envisioned your use case was that another_question_to_ask would refer to the 
next question.  So you have a hierarchy of questions, with answers pointing you 
to somewhere within the hierarchy.

--- On Tue, 8/3/10, kevinpfromnm <[email protected]> wrote:

From: kevinpfromnm <[email protected]>
Subject: [Hobo Users] Re: Multiple models in one tree?
To: "Hobo Users" <[email protected]>
Date: Tuesday, August 3, 2010, 11:26 AM

you might need to define it with a belongs_to for hobo/rails to be
more aware of it.

belongs_to :parent, :class_name => "Answer"

On Aug 3, 4:17 am, Simeon Theobald <[email protected]> wrote:
> Once we get this working, I'd be only too happy to make a recipe.
>
> We're not there yet though.
>
> I'm not sure how the parentid aspect of the example should work - at the
> moment it doesn't seem to have any function (when I removed it, nothing
> obviously changed).
>
> It seems to me that we need to somehow make hobo aware that the parentid
> refers to an answer record. I'm not yet in a position to intuitively
> understand how that would be done..
>
> Another thought - given that the original acts_as_tree recipe works so
> nicely, should I be considering a Single Table Inheritance solution here
> ?<DBA_shudder/>
> We can get the desired functionality when the model is self referencing
> (category has_many:categorys), but the same seems to be more difficult -
> conceptually at least - with multiple model recursion.
>
> Simeon.
>
> On Tue, Aug 3, 2010 at 11:41 AM, Owen At Barquin <[email protected]> wrote:
>
> > Yes, that would great. Or a github gist.
>
> > -------------------------
> > Owen Dall
> > Chief Systems Architect
> > Barquin International
> > 410-991-0811
>
> > On Aug 2, 2010, at 7:22 PM, "[email protected]" <[email protected]>
> > wrote:
>
> > > I bet this this look better in a pastie. Kind of hard to see the
> > > format.
>
> > > On Aug 2, 2:39 pm, Owen Dall <[email protected]> wrote:
> > >> Wow - nice example!
> > >> -Owen
>
> > >> On Mon, Aug 2, 2010 at 5:02 PM, Simeon Theobald
> > >> <[email protected]>wrote:
>
> > >>> Thanks Chuck - I haven't had a chance to try this out yet, but greatly
> > >>> appreciate the effort you've gone to in fitting an example to my use
> > case.
>
> > >>> I'll let you know how it works out.
>
> > >>> Simeon.
>
> > >>> On Mon, Aug 2, 2010 at 2:44 AM, <[email protected]> wrote:
>
> > >>>> After I wrote the acts_as_tree recipe, I wrote another tag definition
> > that
> > >>>> iterates over an acts_as_tree model and displays the cards of an
> > associated
> > >>>> has_many model.  This will not work precisely the way you want for
> > your use
> > >>>> case, but might spur some ideas.
>
> > >>>> Example:
>
> > >>>> class Question < ActiveRecord::Base
> > >>>>   hobo_model
> > >>>>   fields do
> > >>>>     name :string
> > >>>>     parent_id :integer
> > >>>>   end
>
> > >>>>   has_many :answers
> > >>>>   belongs_to :answer
> > >>>>   acts_as_tree
> > >>>> end
>
> > >>>> class Answer < ActiveRecord::Base
> > >>>>   hobo_model
> > >>>>   fields do
> > >>>>     name : string
> > >>>>   end
> > >>>>   belongs_to :question
> > >>>>   has_one :another_question_to_ask, :class_name => 'question'
> > >>>> end
>
> > >>>> In application.dryml:
>
> > >>>> <extend tag="index-page" for="Question">
>
> > >>>>     <old-index-page merge>
>
> > >>>>         <after-new-link:><p><br/>Click a question to view
> > >>>> answers.</p></after-new-link:>
>
> > >>>>         <!-- Remove pager control -->
>
> > >>>>         <top-page-nav: replace />
>
> > >>>>         <collection: replace>
>
> > >>>>             <hierarchical-collection with="&Question.all"
> > to="answers">
>
> > >>>>                 <append-close-button:>
>
> > >>>>                     <a:answers action="new"
> > >>>> if="&can_create?(this.answers)">
>
> > >>>>                         <ht key="answers.actions.new">
>
> > >>>>                             New Answer
>
> > >>>>                         </ht>
>
> > >>>>                     </a:answers>
>
> > >>>>                 </append-close-button:>
>
> > >>>>             </hierarchical-collection>
>
> > >>>>         </collection:>
>
> > >>>>         <!-- Remove pager control -->
>
> > >>>>         <bottom-page-nav: replace />
>
> > >>>>     </old-index-page>
>
> > >>>> </extend>
>
> > >>>> <def tag="hierarchical-collection" attrs="to">
>
> > >>>>     <%
>
> > >>>>         def tree_h(acts_as_tree_set, init=true, &block)
>
> > >>>>             @@level = 1 if init
>
> > >>>>             if acts_as_tree_set.size > 0
>
> > >>>>                 acts_as_tree_set.collect do |item| %>
>
> > >>>>                     <do with="&item"> <%
>
> > >>>>                         next if item.parent_id && init
>
> > >>>>                         @@level += 1
>
> > >>>>                         yield item
>
> > >>>>                         tree_h(item.children, false, &block) if
> > >>>> item.children.size > 0
>
> > >>>>                         @@level -= 1 %>
>
> > >>>>                     </do> <%
>
> > >>>>                 end
>
> > >>>>             else
>
> > >>>>                 %>(none)<%
>
> > >>>>             end
>
> > >>>>         end
>
> > >>>>         tree_h(this, true) { |item|
>
> > >>>>             item_for = to.nil? ? item : item.send(to) %>
>
> > >>>>             <%= "<h#{@@level}>" %>
>
> > >>>>             <a href="#"
>
> > onclick="Effect.BlindDown('hierarchy-collection-#{item.typed_id.gsub(':','-
> > ')}');
> > >>>> return false;" param="hierarchy-link">
>
> > >>>>             <%= item.name + (" (#{item_for.count})" if
> > >>>> item_for.respond_to?('count')) %>
>
> > >>>>             </a>
>
> > >>>>             <%= "</h#{@@level}" %><%
>
> > >>>>             if item_for.respond_to?('count') %>
>
> > >>>>                 <div
> > >>>> id="hierarchy-collection-#{item.typed_id.gsub(':','-')}"
> > style="display:
> > >>>> none" param="hierarchy-section">
>
> > >>>>                     <div class="close-button" param="close-button">
>
> > >>>>                         <a href="#"
>
> > onclick="$('hierarchy-collection-#{item.typed_id.gsub(':','-')}').hide();
> > >>>> return false;">close</a>
>
> > >>>>                     </div>
>
> > >>>>                     <collection with="&item_for" param="items" />
>
> > >>>>                 </div><%
>
> > >>>>             end
>
> > >>>>         }
>
> > >>>>     %>
>
> > >>>> </def>
>
> > >>>> --- On *Sat, 7/31/10, Simeon Theobald <[email protected]>*
> > wrote:
>
> > >>>> From: Simeon Theobald <[email protected]>
> > >>>> Subject: Re: [Hobo Users] Multiple models in one tree?
> > >>>> To: [email protected]
> > >>>> Date: Saturday, July 31, 2010, 12:19 AM
>
> > >>>> Okay - a rough outline:
>
> > >>>> A question has many potential answers. Each answer can lead to a
> > number of
> > >>>> questions. An example would be:
>
> > >>>> +Would you like Coffee or Tea?   [Question]
> > >>>> - Coffee     [Answer]
> > >>>>    +De-Caff or Regular?    [Question]
> > >>>>      -De-Caff   [Answer]
> > >>>>      -Regular   [Answer]
> > >>>>      +Moccona or Nescafe    [Question]
> > >>>> -Tea         [Answer]
>
> > >>>> I can't see that recursive nesting of two trees should be a problem
> > given
> > >>>> that we can pass in the "parentid" (which incidentally I need to
> > figure out
> > >>>> how to specify differently), the problem at the moment is that I can't
> > see a
> > >>>> way to pass the current "id" to the alternate model's tree as a
> > "parentid".
>
> > >>>> I'd eventually like to include links to add "children", or edit/remove
> > the
> > >>>> current node. That functionality further complicates things in that it
> > will
> > >>>> involve manipulating records in the intermediary tables as well as the
> > leaf
> > >>>> level. Nesting sure messes with your frame of reference!
>
> > >>>> First things first though, I need to get a tree out somehow..
>
> > >>>> On Sat, Jul 31, 2010 at 12:43 PM, Chuck Benedict <
> > >>>> [email protected] <
> > http://mc/[email protected]>>wrote:
>
> > >>>> Give me a use case and I'll be glad to add my $0.02
>
> > >>>> Sent from my iPhone
>
> > >>>> On Jul 30, 2010, at 5:02 AM, Simeon <[email protected]<
> > http://mc/[email protected]>>
> > >>>> wrote:
>
> > >>>> The learning curve gets steep in a hurry around these parts!
>
> > >>>> The "Hierarchies - Using acts_as_tree" recipe deals nicely with a self
> > >>>> referencing model (category belongs to category) but it takes on the
> > >>>> context of the model containing the call. I have yet to find reference
> > >>>> to a similar solution involving multiple (nested) models.
>
> > >>>> Is it possible, and how would I go about starting to figure it out?
>
> > >>>> Thanks for your thoughts!
>
> > >>>>  --
> > >>>> You received this message because you are subscribed to the Google
> > Groups
> > >>>> "Hobo Users" group.
> > >>>> To post to this group, send email to [email protected].
> > >>>> To unsubscribe from this group, send email to
> > >>>> [email protected]<hobousers%[email protected]>
> > <hobousers%2bunsubscr...@googlegroups .com>
> > >>>> .
> > >>>> For more options, visit this group at
> > >>>>http://groups.google.com/group/hobousers?hl=en.
>
> > >>>>  --
> > >>>> You received this message because you are subscribed to the Google
> > Groups
> > >>>> "Hobo Users" group.
> > >>>> To post to this group, send email to [email protected].
> > >>>> To unsubscribe from this group, send email to
> > >>>> [email protected]<hobousers%[email protected]>
> > <hobousers%2bunsubscr...@googlegroups .com>
> > >>>> .
> > >>>> For more options, visit this group at
> > >>>>http://groups.google.com/group/hobousers?hl=en.
>
> > >>>  --
> > >>> You received this message because you are subscribed to the Google
> > Groups
> > >>> "Hobo Users" group.
> > >>> To post to this group, send email to [email protected].
> > >>> To unsubscribe from this group, send email to
> > >>> [email protected]<hobousers%[email protected]>
> > <hobousers%2bunsubscr...@googlegroups .com>
> > >>> .
> > >>> For more options, visit this group at
> > >>>http://groups.google.com/group/hobousers?hl=en.
>
> > >> --
> > >> - Owen
>
> > >> Owen Dall, Chief Systems Architect
> > >> Barquin International
> > >> Cell: 410-991-0811
>
> > > --
> > > You received this message because you are subscribed to the Google Groups
> > "Hobo Users" group.
> > > To post to this group, send email to [email protected].
> > > To unsubscribe from this group, send email to
>
> ...
>
> read more »

-- 
You received this message because you are subscribed to the Google Groups "Hobo 
Users" 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/hobousers?hl=en.

-- 
You received this message because you are subscribed to the Google Groups "Hobo 
Users" 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/hobousers?hl=en.

Reply via email to