하나의 배열이 하나의 ActiveRecord 테이블의 ID입니다. 그래서 그 ID와 관련된 성을 기반으로 그 배열을 정렬하고 싶습니다 ... 어떻게 할 수 있습니까? 설명 : 배열 @ students = [], 내부는 ID이고 Student.find (ID) .last 순으로 정렬하고 싶습니다. 감사합니다. 는 DorijanRuby on Rails 3 : ActiveRecord의 데이터를 기반으로 정렬 정렬
는
1
A
답변
5
완전히 당신이 아이디의 목록을 제공하는 경우, 질문을 이해하지 않고, 당신이 질의를하고있는 LAST_NAME으로 정렬 할 수 있습니다 물론
Student.where("id IN (?)", @students).order(:last_name)
,이 가정 @students는 ID의 배열이고 다른 것은 없다.
귀하의 의견에 응답, 왜 해야할지 모르겠지만 @student 배열은 학생 모델과 그 속성을 모르는 ids 목록 일 뿐이며 여전히 좋아할 것입니다. 해당 배열을 주문하면 다음을 수행 할 수 있습니다.
@students = Student.where("id IN (?)", @students).order(:last_name).collect(&:id)
이렇게하면 성으로 정렬 된 ID 배열이 반환됩니다. 그러나 다시, 나는 당신이 장면 뒤에서 무엇을하고 있는지 정말로 모르며, 당신이 무엇을 요구하고 있는지 확신 할 수 없습니다.
0
Student.find(@students).sort_by { |s| s.last_name }
+1
잘 작동하지만 정렬 할 학생 기록이 많은 경우 (특히 last_name 열의 색인이 생성 된 경우) 비효율적 일 수 있음을 기억하십시오. –
2
는 귀하의 의견을 바탕으로, 다음을 수행 할 : 입력
- 가져 가라.
당신은 다음을 수행 할 수 있어야한다 :이 부셔
Student.where(:id => @ids).order(:last_name).map(&:id)
:
where(:id => @ids)
만 ID의 배열의 ID와 학생을 선택합니다.order(:last_name)
결과를 성으로 정렬합니다.map(&:id)
은Students
의 배열을 취하고 ID 열만 반환합니다. 기본적으로 괄호 안에있는 메소드 (각 학생에 대해id
을 호출하는 바로 가기)는 발견 된 각 학생에게 호출되며 반환 값은 새 배열 (ID 만 포함)로 조합됩니다.
몇몇 개는 일 : ID가 데이터베이스에 존재하지 않는 경우
- , 그것은 결과에서 제외됩니다 - 당신의 결과 배열이 입력 배열보다 작은 경우, 당신이 시도 할 수있다 더 이상 존재하지 않는 레코드에 액세스하십시오.
- 학생 테이블에 많은 열이있는 경우
select(:id)
을 호출하여 데이터베이스에서 Student 레코드의 모든 열을 가져 오지 않도록 할 수 있습니다.
관련 문제
- 1. 데이터를 기반으로 정렬 정렬
- 2. Ruby on Rails : 객체 컬렉션 정렬
- 3. 여러 조건으로 목록 정렬 Ruby on Rails
- 4. Ruby on Rails 정렬 가능 목록
- 5. ActiveRecord의 클래스 인스턴스 변수 (Ruby On Rails)
- 6. ruby on rails 3 질문
- 7. Ruby on Rails 3 튜토리얼
- 8. Ruby on rails 3 우정
- 9. Rails 3 complex 정렬별로 정렬
- 10. Ruby on Rails 블로그 항목 및 댓글의 역순 정렬
- 11. Ruby on Rails with JQuery 정렬 할 수있는 문제
- 12. Ruby on Rails 애플리케이션에서 정렬 가능한 테이블에 jQuery 아약스 필터
- 13. Ruby on Rails : 정렬 할 수있는 테이블 열 오류
- 14. ruby on rails - ruby on rails 2
- 15. ruby on rails 3 캐시 된 데이터를 사용하여 다시로드
- 16. Ruby on Rails 3 .each do 문제
- 17. FreeBsd의 Ruby On Rails 3 구성
- 18. Ruby on Rails 3 튜토리얼 : 'Heroku Console'
- 19. Ruby On Rails 3 - Atom 피드 문제
- 20. ruby-on-rails 3 리소스 처리
- 21. Ruby on rails 3 언제든지 문제가 발생합니다.
- 22. ruby on Rails 3 이상에서 flash.now가 작동합니까?
- 23. Ruby on Rails 3 : has_one 연관 테스트
- 24. Ruby on Rails 3.X 리소스 목록?
- 25. Ruby on Rails 3 :보기로 즐기기
- 26. Ruby on Rails 3 REST 호출시 InvalidAuthenticityToken
- 27. Ruby on Rails 3 다중 테이블
- 28. Ruby on Rails 다음 3 개월 선택
- 29. ruby on rails 3, 하나의보기에서 여러보기를 렌더링
- 30. Ruby on Rails 3 웹 앱의 차트
안녕하세요 ... 빠른 답장을 보내 주셔서 감사합니다. 그러나 배열 @ students = []를 정렬해야합니다. ActiveRecords에서 데이터를 정렬하는 것이 아닙니다. 예 : 내 배열에는 숫자 [7,13,15]가 있고 성 7은 Zorro이고 13은 Anthony이고 15는 Lovejoy이므로 최종 배열은 [15,13,7]이어야합니다 ... – user899119
하지만 어쩌면이 일을해야합니다. 알겠습니다. – user899119
데이터베이스에서 언급 한 데이터를 조회하는 것이 허용되지 않으면 정렬하려는 데이터를 포함하도록 어레이가 필요합니다. –