DZone Snippets is a public source code repository. Easily build up your personal collection of code snippets, categorize them with tags / keywords, and share them with the world

Snippets has posted 5883 posts at DZone. View Full User Profile

Getting Rails .find(... :order => Text_field To Sort Alphabetically Ignoring Upper Case

03.11.2009
| 13631 views |
  • submit to reddit
        // my problem was that a Rails Find :order(ed) on :description (a text field) was putting Upper case values ahead of all the down case values.  This was written using the Ruby sort_by code.  Perhaps someone will come behind me and post how this could have been done in 1 line.  I welcome it.

def Prayer.in_alphabetical_order
    all_prayers = Prayer.find(:all)
    unsorted_prayers = []
    all_prayers.each do |p|
      unsorted_prayers << {:prayer => p, :description => p.description.downcase}
    end
    sorted_prayers_container = unsorted_prayers.sort_by{ |i| i[:description]}
    sorted_prayers = []
    sorted_prayers_container.each do |p|
      sorted_prayers << p[:prayer]
    end

    return sorted_prayers
  end
    

Comments

John Lannon replied on Thu, 2009/09/24 - 12:14am

You could have the database do it. In mysql: def Prayer.in_alphabetical_order Prayer.find(:all, :order => "TRIM(LOWER(title))") end

chiery luvly replied on Wed, 2009/09/02 - 7:45am

Thank you so much for the code.. It really helps me.. Addicting Games-Free Games-Video Games

Snippets Manager replied on Thu, 2009/03/12 - 10:32am

def Prayer.in_alphabetical_order Prayer.find(:all).sort_by{|p| p.description.downcase} end