On Thu, Aug 5, 2010 at 4:16 PM, deco <[email protected]> wrote:
> If I made a third model manually and called it cars_people with > person_id and car_id as primary keys I could add rows to it. > (Person.cars_people.new(params) ... I realize his may not be the > correct way, please advise) But seeing as it was done "through > Resource" I don't know how to create them. > > I think you are on the right track. DataMapper supports 2 kinds of join tables, anonymous and custom. For most people anonymous join tables are fine; DM creates the table and references in the background. > My models: > > Cars > property :id, Serial > property :name, String > property :model, String > has n, :people, :through => Resource > > > People > property :id, Serial > property :name, String > property :model, String > has n, :people, :through => Resource The key thing here is: has n, :model, :through => Resource This signifies that you are making an anonymous join table. To make this a custom, non anonymous join table, you would need to code it up as a regular model like you are suggesting: CarsPeople belongs_to :people belongs_to :cars property :custom_join_table_property, Stromg Then in your Cars and People models you signify the Custom join table like so: has n, :people, :through => CarsPeople Apologies if this isn't exactly correct, and I have played it fast and loose with DM pluralization naming conventions, but I think you get the picture. The docs aren't exactly swimming with information on how to do this, but the principle is pretty straightforward and consistent. -- http://richardconroy.blogspot.com -- You received this message because you are subscribed to the Google Groups "DataMapper" 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/datamapper?hl=en.
