2012-07-03 4 views
0

레일이하는 정렬에 문제가 있습니다. 대문자와 그룹을 함께 표시 한 다음 그룹을 함께 소문자로 표시합니다. 그리고 나는 데이터베이스의 데이터가 동일해야하지만 사용자가 입력 할 수없는 데이터가 있어야한다고 동의합니다.레일 정렬 대문자와 소문자

내 검색 컨트롤러 내 모델

def accounts 
    @accounts ||= Account.search(params[:search]).order(sort_column + " " + sort_direction).paginate(:per_page => 100, :page => params[:page]) 
    end 
    helper_method :accounts 

    def account 
    @account ||= params[:id] ? Account.find(params[:id]) : Account.new(params[:account]) 
    end 
    helper_method :account 

    def sort_column 
    Account.column_names.include?(params[:sort]) ? params[:sort] : "name" 
    end 

    def sort_direction 
    %w[asc desc].include?(params[:direction]) ? params[:direction] : "asc" 
    end 

지금이 완벽하게 작동

def self.search(search) 
    if search 
     where('name LIKE ?', "%#{search}%") 
    else 
     scoped 
    end 
    end 

을 가지고 있지만 그것은 B C를 보여줍니다 B C

그리고이어야합니다. 바로 주문하는 B B C C

답변

0

내가하고 싶은 방식은

입니다.
result = Users.find(:all, :order => "LOWER(#{params[:sort]} #{params[:direction]})") 
2

통화가 데이터베이스에 부르는 "BY ORDER"을 만듭니다. 이것을 확인하기 위해 기록을보십시오. 다른 순서를 원한다면 데이터베이스가 결과를 주문하는 방식을 조정할 필요가 있습니다!

1

당신은

곳 ('이름 ILIKE을? ","%의 # {검색} % ") 사용하는 경우

에 대신

LIKE

관련 문제