Thanks for pointing that out. I have gotten things working much more
elegantly now.

On Feb 13, 12:31 am, mltsy <[email protected]> wrote:
> I don't see why zookeeper.animals.last(:type => 'Elephant') wouldn't
> work, although I admit I haven't tried your code.  Does that give you
> an error?
>
> You should also be able to use Elephant.last(:zookeper => zookeeper)
> (you don't have to use zookeeper_id)
>
> -Joe
>
> On Feb 11, 10:30 am, Neil Chaudhuri <[email protected]> wrote:
>
>
>
>
>
>
>
> > Just wanted to check in once again to see if any DataMapper users had
> > come across this. Long story short, I would prefer not to query my 1:M
> > collection of abstractions via
> > Animal.last(:type=>"Elephant", :zookeeper_id => id).
>
> > For one thing, I don't see the need to iterate over the entire Animal
> > table when I can just query the associations in the Zookeeper
> > instance.
>
> > For another, I don't like that such a method call tightly couples my
> > code to the ORM implementation details--in other words, knowing that
> > the foreign key is called zookeeper_id is a detail I shouldn't have to
> > know about lest that changes for whatever reason.
>
> > The preferable thing would be something, given the object model
> > described in my previous message, like
> > zookeeper.animals.last(:type=>"Elephant") or
> > zookeeper.animals.last(:elephant) or some such.
>
> > Is this possible now? How have you solved this problem if you've
> > encountered it?
>
> > Thanks.
>
> > On Feb 5, 12:48 am, Neil Chaudhuri <[email protected]> wrote:
>
> > > Let's say I have a Zookeeper (as in someone running a zoo and not the
> > > Hadoop coordination software) entity that has an association of Animal
> > > entities, which include Elephant, Monkey, and Giraffe subclasses. So I
> > > have the following:
>
> > > class Zookeeper
> > >   include DataMapper::Resource
> > > .
> > > .
> > > .
> > >   has n, :animals
> > > end
>
> > > class Animal
> > >   include DataMapper::Resource
>
> > >   property :id, Serial
> > >   property :type, Discriminator
> > >   property :number_of_legs, Integer
> > >   property :created_at, DateTime
> > >   property :updated_at, DateTime
> > > .
> > > .
> > > .
> > >   belongs_to :zookeeper
> > > end
>
> > > class Elephant < Animal; end
> > > class Monkey < Animal; end
> > > class Giraffe < Animal; end
>
> > > I would like to add a method to my Zookeeper class that can get the
> > > last Elephant added to the collection as defined by the created_at
> > > property. I feel like outside the class I could do something like
>
> > > Elephant.last(:zookeeper_id => id)
>
> > > But I would like the method to be part of the Zookeeper class. I have
> > > studied the documentation, but I can't find a use case where the
> > > parent of an association wants to locate one particular child in the
> > > association.
>
> > > Any insight is appreciated.
>
> > > 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.

Reply via email to