Mike,

I read back the irc logs and updated the pastie to be more what you'd
expect, I guess:

http://pastie.org/598754

cheers
snusnu

On Sat, Aug 29, 2009 at 15:14, Martin Gamsjaeger<[email protected]> wrote:
> Mike,
>
> I guess what you want to do is something like this: http://pastie.org/598754
>
> cheers
> snusnu
>
>
>
> On Sat, Aug 29, 2009 at 00:57, Mike
> Thompson<[email protected]> wrote:
>>
>> 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
-~----------~----~----~----~------~----~------~--~---

Reply via email to