Jeremy,

Yes, I knew the code was broken as it was a simple example to give a
basic idea of what you had to do. I took a look at the association_pks
plugin while I was on my way
to work and it seems to do the trick perfectly fine. Thanks for that!

Yorick

On Dec 21, 5:31 am, Jeremy Evans <[email protected]> wrote:
> On Dec 20, 3:43 pm, Yorick Peterse <[email protected]> wrote:
>
>
>
>
>
> > Fellow geeks,
>
> > I'm a geek, just like you, and I use Sequel, just like you (why else would I
> > be here? ;)). And just like you I have a problem (no, not that kind of
> > problem).
> > Now what do geeks do when they have a problem? They Google? Maybe
> > Stackoverflow? Nope, they write silly Emails and smack them on a mailing
> > list so other folks can solve the issue.
>
> > Anyway, enough of that. What I'm trying to achieve is probably quite simple
> > and can be achieved by writing a custom method. However, before doing so I'd
> > like to know if it's not something
> > available by default. The problem is that I have 2 tables, "old men" and
> > "little kids". The relation system is set up so that an old man can have
> > many little kids and a little kid can belong to many old men.
> > Whenever using a web UI users can assign which kids belong to what old man,
> > but here's the problem. As this association is a many to many it means we'll
> > have to deal with a join table and can't update
> > the related item(s) by just changing a column in the "old men" table.
>
> > The common way is to create N instances of a little kid and pass them to the
> > add_little_kid or remove_little_kid method. What I dislike about this is
> > that first we have to send N queries to retrieve the required
> > records from the "little kids" table and then have to pass these objects to
> > a method which in turn will most likely be placed in an if statement (to
> > determine if the row is new or not). This would result in the following
> > pseudo code:
>
> > little_kids = post["little_kid_ids"].map do |id|
>
> >   LittleKid[id]
>
> > end # => [#<Object 1>, #<Object 2>]
>
> > > OldMan.add_little_kids(little_kids)
>
> This is broken, you'd have to do:
>
>   post["little_kid_ids"].each do |id|
>     OldMan.add_little_kid(LittleKid[id])
>   end
>
> with the master branch, you can do:
>
>   post["little_kid_ids"].each do |id|
>     OldMan.add_little_kid(id)
>   end
>
> But that's not any better performing as it still does a query to get
> the LittleKid.
>
> > While this code is greatly simplified (and probably broken) you most likely
> > get the idea: way too many queries and loops involved for something
> > relatively simple. Jeremy Evans from the #sequel channel mentioned the
> > "association_pks" plugin
> > so I'll take a look at that tomorrow but I'd like to know if there are other
> > possible ways of doing it.
>
> I'm pretty sure it's what you want. Here's a link to the
> documentation:http://sequel.rubyforge.org/rdoc-plugins/classes/Sequel/Plugins/Assoc...
>
> Jeremy

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

Reply via email to