Order Across Associations: Is It Possible?

62 views
Skip to first unread message

Neil C

unread,
Jan 11, 2013, 7:22:00 PM1/11/13
to datam...@googlegroups.com
Imagine Parent and Child classes as you might expect:

class Parent
  include DataMapper::Resource

  property :id, Serial
  property :name, String, :required => true

  has n, :children, :order => :age.desc   #Note default order by age descending (i.e. oldest to youngest)
end

class Child
  include DataMapper::Resource

  property :id, Serial
  property :name, String, :required => true
  property :age, String, :required => true

  belongs_to :parent
end

I now want the names of the kids from oldest to youngest so I do this


The problem is that the order by age descending isn't being applied; in fact, it is ignored. I am getting the names sorted by id.

Is it even possible to maintain order across associations? If so, how?

Thanks.


Neil C

unread,
Jan 11, 2013, 8:15:21 PM1/11/13
to datam...@googlegroups.com
I made a mistake in my earlier question since I just typed it out. Obviously parent.children.name wouldn't work because Collection doesn't have a name property.

So the better question is: Given the class definitions above, how would I get the names of the kids from oldest to youngest?

Thanks and sorry for the confusion.

abu...@gmail.com

unread,
Feb 17, 2013, 6:06:50 PM2/17/13
to datam...@googlegroups.com
*bump*

Did you find a solution to this Neil?


It is 3 years old now though. Is there a way to achieve this?

Cheers all....
Adam

Neil C

unread,
Feb 17, 2013, 11:24:28 PM2/17/13
to datam...@googlegroups.com
The best I could do is a hack using collect. Something like 

parent.children.collect {|child| child.name}

Whether this is sound depends on whether you have the memory for it. Otherwise, you probably have to write a native SQL query if you want to put the burden on the DB engine. Or wait for DM 2.0.

Thanks.

abu...@gmail.com

unread,
Feb 18, 2013, 8:53:35 AM2/18/13
to datam...@googlegroups.com
Thanks Neil, much obliged

Martin Gamsjaeger

unread,
Feb 18, 2013, 9:00:04 AM2/18/13
to datam...@googlegroups.com


Thanks Neil, much obliged
--
You received this message because you are subscribed to the Google Groups "DataMapper" group.
To unsubscribe from this group and stop receiving emails from it, send an email to datamapper+...@googlegroups.com.
To post to this group, send email to datam...@googlegroups.com.
Visit this group at http://groups.google.com/group/datamapper?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

Reply all
Reply to author
Forward
0 new messages