Skip to content

Instantly share code, notes, and snippets.

@tpitale
Created June 15, 2009 01:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tpitale/129892 to your computer and use it in GitHub Desktop.
Save tpitale/129892 to your computer and use it in GitHub Desktop.
require 'rubygems'
gem 'dm-core', '0.10.0'
require 'dm-core'
DataMapper.setup(:default, 'postgres://tpitale@localhost/test_through_many')
class User
include DataMapper::Resource
property :id, Serial
has n, :sales
has n, :sale_items, :through => :sales
has n, :items, :through => :sale_items
end
class Sale
include DataMapper::Resource
property :id, Serial
belongs_to :user
has n, :sale_items
has n, :items, :through => :sale_items
end
class SaleItem
include DataMapper::Resource
property :id, Serial
belongs_to :sale
belongs_to :item
end
class Item
include DataMapper::Resource
property :id, Serial
has n, :sale_items
end
DataMapper.auto_migrate!
user = User.create
sale = user.sales.create
10.times {sale.items.create}
sale.reload
user.reload
puts sale.items.inspect
puts user.items.inspect
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment