Order for a each loop

I have a model for users and another model for linenumbers and I have
some code that looks like:

@user.linenumbers.each do |line|

end

and it loops through a user and their line numbers. What if I want to
order this list, is there a way to do that?

I know I could just put these linenumbers into an a find statement in my
controller and order it that way, but I would rather not do that way.
Thanks,

-S

On Jun 29, 5:31 pm, Shandy N. [email protected]
wrote:

I have a model for users and another model for linenumbers and I have
some code that looks like:

@user.linenumbers.each do |line|

end

and it loops through a user and their line numbers. What if I want to
order this list, is there a way to do that?

Well you can give an :order option to the association yourself.
Alternatively you could call sort or sort_by on your array

Fred

On Jun 29, 2009, at 5:31 PM, Shandy N. wrote:

I know I could just put these linenumbers into an a find statement
in my
controller and order it that way, but I would rather not do that way.
Thanks,

-S

Well, after first thinking “Why not?” I’ll offer this (it’s only Ruby):

@user.linenumbers.sort_by{|line| line.number}.each do |line|
#…
end

But I’ll still suggest:

class User
has_many :linenumbers, :order => ‘number’
end

Or perhaps a named scope is OK,

class Linenumber
named_scope :ordered, :order => ‘number’
end

@user.linenumbers.ordered.each do |line|
#…
end

-Rob

Rob B. http://agileconsultingllc.com
[email protected]

2009/6/29 Rob B. [email protected]:

order this list, is there a way to do that?

Or perhaps a named scope is OK,

class Linenumber
 named_scope :ordered, :order => ‘number’
end

Or
default_scope :order => ‘number’
if linenumbers are always to be sorted.

Coli9n

Perfect, exactly what I wanted, thank you both.

-S