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 -- Posted via http://www.ruby-forum.com/.
On Jun 29, 5:31 pm, Shandy Nantz <rails-mailing-l...-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> 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> > 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 > -- > Posted viahttp://www.ruby-forum.com/.
On Jun 29, 2009, at 5:31 PM, Shandy Nantz 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? > > 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 Biedenharn http://agileconsultingllc.com Rob-xa9cJyRlE0mWcWVYNo9pwxS2lgjeYSpx@public.gmane.org
2009/6/29 Rob Biedenharn <Rob-GBZH0y1GwQfnZcttdmLDtcI/UQi/AW5J@public.gmane.org>:> > On Jun 29, 2009, at 5:31 PM, Shandy Nantz 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? >> >> 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'' > endOr default_scope :order => ''number'' if linenumbers are always to be sorted. Coli9n