Thanks a lot!!! Looking at the dm-taggings now. :-)
On 5 Apr 2011, at 4:58 PM, Piotr Solnica wrote: > Ah source code looks crappy here, here's a gist: > https://gist.github.com/903276 > > On Apr 5, 10:56 am, Piotr Solnica <[email protected]> wrote: >> Hey Nevin, >> >> We forgive you ;) >> >> Anyway, here's what you can do: >> >> class Photo >> include DataMapper::Resource >> >> property :id, Serial >> property :caption, String >> >> has n, :photo_tags >> has n, :tags, :through => :photo_tags >> end >> >> class PhotoTag >> include DataMapper::Resource >> >> belongs_to :photo, :key => true >> belongs_to :tag, :key => true >> end >> >> class PhotoSet >> include DataMapper::Resource >> >> property :id, Serial >> >> has n, :photo_set_tags >> has n, :tags, :through => :photo_tags >> >> has n, :photos, :through => :tags >> end >> >> class PhotoSetTag >> include DataMapper::Resource >> >> belongs_to :photo_set, :key => true >> belongs_to :tag, :key => true >> end >> >> class Tag >> include DataMapper::Resource >> >> property :id, Serial >> property :name, String, :unique => true >> >> has n, :photo_tags >> has n, :photos, :through => :photo_tags >> >> has n, :photo_set_tags >> has n, :photos, :through => :photo_tags >> end >> >> DataMapper.finalize >> DataMapper.auto_migrate! >> >> red_tag = Tag.create(:name => 'red') >> green_tag = Tag.create(:name => 'green') >> blue_tag = Tag.create(:name => 'blue') >> >> Photo.create(:caption => "Tagged with red", :tags => >> [ red_tag ]) >> Photo.create(:caption => "Tagged with green", :tags => >> [ green_tag ]) >> Photo.create(:caption => "Tagged with green and blue", :tags => >> [ green_tag, blue_tag ]) >> >> photo_set_red = PhotoSet.create(:tags => [ red_tag ]) >> photo_set_green_and_blue = PhotoSet.create(:tags => [ green_tag, >> blue_tag ]) >> >> # fetch all the photos from the photo set that has "red" tag >> photo_set_red.photos >> >> # fetch all the photos from the photo set that has "green" and "blue" >> tags >> photo_set_green_and_blue.photos >> >> Please also remember that you can use dm-taggings plugins that does >> 90% of the above. >> >> Hope this helps! >> >> Cheers >> >> # solnic >> >> On Apr 5, 9:52 am, Nevin <[email protected]> wrote: >> >> >> >> >> >> >> >>> Hi, >> >>> Please forgive me that I'm pretty new to datamapper :-P >> >>> When I reading the associations document in the datamapper web, it >>> shows how to do a mapping between Photo <--> Tag via the Tagging >>> class. >> >>> What if I want to further extend the model so that a Set class is >>> created to include Photos? The idea is to able to add Tags into a Set >>> so I can retrieve all the Photos that have the same Tags. >> >>> Sets <--- tagging ---> Tags >>> Photos <--- tagging ---> Tags >> >>> So ultimately: >>> Set <--- Tags? Tagging? ---> Photos >> >>> Thanks :-) > > -- > 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. > -- 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.
