Skip to content

Instantly share code, notes, and snippets.

@mmmurf
Created June 28, 2010 20:27
Show Gist options
  • Save mmmurf/3f56de49b1002f1b5442 to your computer and use it in GitHub Desktop.
Save mmmurf/3f56de49b1002f1b5442 to your computer and use it in GitHub Desktop.
require 'dm-core'
require 'dm-migrations'
class PetSpecies
include DataMapper::Resource
has n, :pets
has n, :people, :through => :pets
property :id, Serial
def self.filter
all.map{|k| ["species_ #{k.id}"]}
end
end
class Pet
include DataMapper::Resource
belongs_to :pet_species
belongs_to :person
property :id, Serial
def self.filter
all.map{|k| ["pet_ #{k.id}"]}
end
end
class Person
include DataMapper::Resource
has n, :pets
has n, :pet_species, :through => :pets
property :id, Serial
def self.filter
all.map{|k| ["person_ #{k.id}"]}
end
end
DataMapper.setup(:default, 'sqlite:///tmp/testdb')
DataMapper.auto_migrate!!
DataMapper.finalize
s = PetSpecies.create
p = Person.create
3.times{
Pet.create(:person => p, :pet_species => s)
}
p.pet_species # does not raise
p.pet_species.filter # raises
s.people # does not raise
s.people.filter # raises
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment