The basic goal here is that I have 2 categories of Url saved to a
campaign. They are primary and competitor. Both relationships are many
to many. The interaction I am hoping to model is one where basically a
boolean differentiator goes in the join table. Thus there is only one
table associating urls to the campaigns and it carries the
relationship of weather they are competitors or primary. Hopefully the
following snippets will more illustrate my goal. If someone could just
put me on the right path, that would be great.
1 class Campaign
2 include DataMapper::Resource
3
4 property :id, Serial
5 property :name, String
6
7 has n, :urls, :through => Resource
8
9 end
1 class Url
2 include DataMapper::Resource
3
4 property :id, Serial
5 property :url, String, :length => 255, :format => /(^$)|(^(http|
https):\/\/[a-z0-9\-\.]+([\.]{1}[a-z0-9]+)*\.[a-z]{2,6}(([0-9]{1,5})?
\/.*)?$)/ix
6 validates_is_unique :url
7
8
9 end
1 class CampaignsUrl
2 include DataMapper::Resource
3
4 property :id, Serial
5 property :url_id, Integer
6 property :campaign_id, Integer
7 property :competitor, Boolean
8
9
10 has 1, :url
11 has 1, :campaign
12
13 end
And finally the spec file to illustrate:
1 require File.join( File.dirname(__FILE__), '..', "spec_helper" )
2
3 describe Campaign do
4
5 it "should let me save a url as a primary and as a competitor
each shoudl create a unque row" do
6 campaign = Campaign.new(:name => 'My first Campaign')
7 campaign.save
8 primary = Url.new(:url => 'http://www.google.com')
9 primary.save
10 competitor = Url.new(:url => 'http://www.bing.com')
11 competitor.save
12 campaign.primaries << primary
13 campaign.competitors << competitor
14 campaign.save
15 camp_url = CampaignsUrl.first(:campaign_id => campaign.id,
url_id => primary.id)
16 camp_url.competitor.should eql(false)
17 camp_url = CampaignsUrl.first(:campaign_id => campaign.id,
url_id => competitor.id)
18 camp_url.competitor.should eql(true)
19
20 end
21
22 end
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---