Fred, Yeah, you are totally tracking with what I am saying. I think it is a bug though because in a 1 to many relationship, or in a many to many relationship, the same join shouldn't exist more than once? Is there a scenario where it even makes sense?
The :uniq option just has ruby remove duplicates from the array returned (e.g. category.posts.uniq). The categories.include?(post) code around is the one I am going with, its just not as elegant as I was hoping for. Now I just need to do a comparison to see if the child has already been assigned to the parent before adding it. Thanks! Tom On Nov 6, 9:37 am, Frederick Cheung <[EMAIL PROTECTED]> wrote: > On 6 Nov 2008, at 14:00, TomRossi7 wrote: > > > > > Fred, > > > Thanks for the reply! The :uniq is good work around, but multiple > > entries are still added to the database. The unique index will > > actually cause ActiveRecord to throw an error since it is trying to > > create a duplicate record. > > > This seems like a bug to me that it creates duplicate records? I can > > code around it, but wanted to make sure I wasn't missing something. > > I don't think it's necessarily a bug. Depend on how you are using it > duplicate records in an association might be allowed, or might not, > it's not the frameworks job to say 'collections shall have no > duplicates'. I'm slightly surprised that uniq only affects reading > from the collection, I suppose the thing is that normally categories > << post does not require loading the collection whereas if it checked > if categories.include?(post) that would force the collection to be > loaded (at least it would have previously - I seem to recall the > include? no longer causes the collection to be loaded) > > Fred > > > Thanks, > > Tom > > > On Nov 6, 5:21 am, Frederick Cheung <[EMAIL PROTECTED]> > > wrote: > >> On 5 Nov 2008, at 23:01, TomRossi7 wrote: > > >>> Lets say you have a relationship like post has and belongs to many > >>> categories. If I were to do something like the following: > > >>> category << post > >>> category << post > >>> category << post > > >>> I've basically assigned the post to the category three times. I'm > >>> noticing that in my join table there are now three join records? > >>> Shouldn't it only have one? > > >> If that's what you require, set the :uniq option on the association > >> (and create a unique index on that table to enforce that if you are > >> so > >> enclined) > > >> Fred > > >>> This causes problems when you do category.posts and you get the same > >>> post three times. I'm just wondering if I am missing something > >>> here? > > >>> Thanks, > >>> Tom --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---

