2012-05-30 5 views
-3

내 테이블에 first_name, middle_name 및 last_name 필드가 있습니다. 나는 Aplhabetical 순서에있는 First_name Middle_name Last_name 같이 보여주고 싶다. 일부 레코드의 경우 first_name이 비어있을 수 있습니다. 일부 레코드의 경우 last_name이 비어있을 수 있습니다. 일부 레코드의 경우 middle_name이 비어있을 수 있습니다. first_name blank가 middle_name 및 last_name을 표시해야하는 경우, middle_name 공백은 성과 이름이 필요하면 last_name 공백은 첫 번째 및 중간 이름을 표시해야합니다. 마지막에 나는 알파벳순으로 목록을 보여주고 싶다. 어떻게이 문제에 접근하고 싶습니까?Howe to do ruby ​​

+0

일반 Ruby 또는 RubyOnRails (귀하의 테이블은 ActiveRecord 클래스로 모델링 됨)에 대해 이야기하고 있습니까? –

+0

예 내 테이블이 ActiveRecord 클래스로 모델링되었습니다 – vinothini

+0

알파벳 순서는 무엇을 기준으로합니까? –

답변

0

가능한 해결책은 귀하의 경우입니다.

먼저 non blank 속성을 감지합니다 :

class YourModel < ActiveRecord::Base 
def representation 
    [first_name, middle_name, last_name].detect{ |r| r.present? }.downcase 
end 
end 

가져 오기 제품 :

@objects = YourModel.all 

정렬 개체 :

@objects.sort! { |a,b| a.representation <=> b.representation } 

방법 present?Rails 2.2.1 버전부터 사용할 수 있습니다.

http://apidock.com/rails/v2.2.1/Object/present%3F

따라서 의견의 토론 : present?!blank?과 동일합니다.

# File activesupport/lib/active_support/core_ext/object/blank.rb, line 19 
def present? 
    !blank? 
end 

blank?empty?의 별명입니다.

def empty? 
    all? { |k, v| v && v.empty? && !v.is_a?(String) } 
end 
+0

마지막 하나는 '@objects.sort_by {| a | a.representation}'. –

+0

오류가 있습니다 : 정의되지 않은 메소드'present? ' for "": String – vinothini

+0

'! r.present? '대신'! r.blank?'를 시도해보고 이것이 작동하는지 확인하십시오. – iain