반응형
Rails, Ruby, 배열 정렬 방법?
내 레일 앱에서 다음과 같이 배열을 만들고 있습니다.
@messages.each do |message|
@list << {
:id => message.id,
:title => message.title,
:time_ago => message.replies.first.created_at
}
end
이 배열을 만든 후 time_ago ASC 순서로 정렬하고 싶습니다. 가능합니까?
@list.sort_by{|e| e[:time_ago]}
기본값은 ASC이지만 DESC를 원한다면 다음을 수행 할 수 있습니다.
@list.sort_by{|e| -e[:time_ago]}
또한에서 목록을 작성하려는 것 같습니다 @messages
. 간단하게 할 수 있습니다.
@list = @messages.map{|m|
{:id => m.id, :title => m.title, :time_ago => m.replies.first.created_at }
}
다음과 같이 할 수 있습니다.
@list.sort {|a, b| a[:time_ago] <=> b[:time_ago]}
레일 4+
@list.sort_by(&:time_ago)
당신은 또한 할 수 있습니다 @list.sort_by { |message| message.time_ago }
참고로 메시지를 새 목록으로 이동 한 다음 정렬하는 것이 중요하지 않습니다. 그것이 ActiveRecord 인 한 그것은 제 생각에 데이터베이스를 쿼리 할 때 직접 수행되어야합니다.
다음과 같이 할 수 있어야 할 것 같습니다.
@messages = Message.includes(:replies).order("replies.created_at ASC")
목적을 오해하지 않는 한 충분합니다.
예, group_by를 사용할 수 있습니다.
http://api.rubyonrails.org/classes/Enumerable.html#method-i-group_by
참고 URL : https://stackoverflow.com/questions/5739158/rails-ruby-how-to-sort-an-array
반응형
'IT박스' 카테고리의 다른 글
Django 템플릿에 이미지 파일을 어떻게 포함하나요? (0) | 2020.11.23 |
---|---|
테이블 구조를 새 테이블로 복사 (0) | 2020.11.23 |
Google 차트 (JS)-차트에 투명한 배경을 사용하는 방법이 있습니까? (0) | 2020.11.23 |
왜 컴파일 오류 "org / codehaus / groovy / control / CompilationFailedException"이 발생합니까? (0) | 2020.11.23 |
Xcode 5 SpringBoard를 영구적으로 수정하는 방법은 오류로 인해 응용 프로그램을 시작하지 못했습니다 : -3 (0) | 2020.11.22 |