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.
On Sunday, February 17, 2013 6:06:50 PM UTC-5, [email protected] wrote:
>
> *bump*
>
> Did you find a solution to this Neil?
>
> I found an old thread:
> https://groups.google.com/forum/?fromgroups=#!topic/datamapper/BChZ83gDSqQ
>
> It is 3 years old now though. Is there a way to achieve this?
>
> Cheers all....
> Adam
>
> On Saturday, 12 January 2013 01:15:21 UTC, Neil C wrote:
>>
>> 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.
>>
>>
>> On Friday, January 11, 2013 7:22:00 PM UTC-5, Neil C wrote:
>>>
>>> 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
>>>
>>> parent.children.name
>>>
>>> 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.
>>>
>>>
>>>
--
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 [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/datamapper?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.