2009/5/20, Colin Law <[email protected]>: > Unless I am missing something (which is very likely) I do not see the need > for the MyProducts table. What is wrong with just > > User > has_many locations > Product > has_many locations > Location > belongs_to user > belongs_to user > > Then a user has a number of locations, each of which may have an associated > product (or not). > Each product can appear in many or no locations. > > Colin > > > 2009/5/20 Jérémy <[email protected]> > >> >> Hi there, >> >> I have some complex situation to solve, and can't manage to find a way >> which satisfy me ... >> >> Here's the problem : >> >> You have to handle many Users (id, name, email, password). >> You have a list of many Products (id, name) which are the same for all >> users. >> You have some Locations (id, user_id, name) of where to put one >> product, each user defining his own locations. >> >> BUT >> >> Every user should be able to put his very own "physical instance" of >> one product in a location OR NOT, which one will, consequently, be >> different for every user. Moreover, he may specify an alternative name >> for the product. >> >> So you have to make some model/table that can link product, location, >> and user altogether. Let's call it MyProducts. >> >> IMO there is 2 ways to go, based on the above : >> - either you put only the products that have a location in MyProducts >> - or you duplicate (badbadbad!) all the products from Products in >> MyProducts, and so for each user, which force you to maintain the same >> list in both tables, but users and products won't change too often, >> and it will require less work when you have to know which product has >> been "modified" or not. >> >> My way of solving this for the moment is the first one : >> >> You have one Product model, that has_many user_products >> You have one User model, that has_many user_products >> You have one Location model, that has_many user_products >> You have one MyProduct model, that belongs_to Product, belongs_to >> Location, and belongs_to User >> >> This doesn't seem too bad, does it ? >> >> The problem is, in your index view, when you want to list all >> Products, you have to get an array of all products, and an array of >> all my_products, and then subtract the products that exist in >> user_product from the products array, so you get only the product not >> "modified" by the user, you can display them, and you can then display >> those in user_product. But they're not ordered. So maybe there is some >> more work to do so ... >> >> And this looks ugly IMO. >> >> So that's why I'm asking you, how would you do something like that ? >> Is it a good idea to do as I did ? This looks like a three way >> association, and I've been taught to never do that but when you can't >> do anything else. >> >> And above all, is there some Rails-way to do this ? Like using >> has_and_belongs_to_many in some cases. >> >> PS : I hope my English isn't too bad, I did my best ;) >> >> > >> > > > >
-- Von meinen Mobilgerät aus gesendet --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---

