Model.first는 테이블에서 첫 번째 레코드를 검색하지 않습니다. 대신 테이블에서 임의의 레코드를 검색합니다.Model.first는 테이블에서 첫 번째 레코드를 검색하지 않습니다.
답변
일부 활성 레코드 버전은 기본 순서를 먼저 쿼리에 추가하고 마지막 순서를 추가하지 않으므로 Postgres의 기본 동작 인 것으로 보입니다.
https://github.com/rails/rails/issues/9885
PostgreSQL은 기본적으로 일반적으로 성능 좋은 일이 일종의을 적용하지 않는다.
따라서 "첫 번째"는 "의미없는 키 값으로 정렬 된 첫 번째 행"이 아니라 "첫 번째 행이 반환되었습니다"를 의미합니다.
신기하게 "마지막"은 이드가 주문한 것처럼 보입니다.
Model.first는 데이터베이스의 기본 정렬을 사용합니다. 예를 들면. Postgresql의 기본 정렬은 반드시 ID 일 필요는 없습니다.
실제로 PostgreSQL에서는 기본 정렬이 전혀 없습니다. 신에게 감사드립니다. 어쨌든 모든 것은 매우 적극적인 버전 의존적입니다. –
직접 주문해야합니다. 시도해보십시오 Merchant.order('id ASC').first
모델의 기본 범위를 사용하여이를 자동화 할 수는 있지만 확실치 않습니다.
다른 주문 조건이 지정되지 않은 경우 기본 키순으로 정렬하려면 here이 레일 4에 정의되어 있습니다. 레일 3.2.11에서
, 그것은 같은 것입니다 : 그냥 제한을 적용하고 데이터베이스에 주문을 떠날 것이다 order
방법없이
def find_first
if loaded?
@records.first
else
@first ||= limit(1).to_a[0]
end
end
.
- 1. updateAll 메서드는 첫 번째 레코드를 저장하지 않습니다.
- 2. 배열이 첫 번째 레코드를 채우지 않습니다.
- 3. mysql 테이블에서 첫 번째 및 마지막 레코드를 찾는 방법
- 4. 각형 검색 필터가 전체 테이블에서 검색하지 않습니다.
- 5. php_mysql_assoc가 첫 번째 레코드를 무시합니다.
- 6. Find_by가 첫 번째 레코드를 반환합니다.
- 7. 값을 검색하지 않고는 레코드를 표시하지 않습니다.
- 8. Linq에서 첫 번째 데이터베이스 레코드를 무시하는 SQL
- 9. 에는 SQL 쿼리에 레코드가있는 테이블에서 임의의 레코드를 검색하지 X하는 방법
- 10. 이 첫 번째 테이블에서 첫 번째 행에 한 번만 보여
- 11. Laravel 첫 번째 레코드를 사용하는 동안 찾을 테이블의 첫 번째 레코드를 반환
- 12. 두 번째 테이블에서 처음으로 레코드를 찾지 못했습니다.
- 13. 기본적으로 데이터리스트에서 첫 번째 레코드를 선택 하시겠습니까?
- 14. 은 index.html.erb의 첫 번째 레코드를 표시합니다.
- 15. 오라클의 테이블에서 유일한 다섯 번째 레코드를 얻으려면
- 16. 각 그룹의 첫 번째 레코드를 선택하십시오.
- 17. 모든 테이블에서 첫 번째 숨김 행 찾기
- 18. 테이블에서 첫 번째 div를 선택하고 클래스
- 19. iOS Sqlite 데이터베이스가 첫 번째 레코드를 표시하지 않습니다.
- 20. SQL 테이블에서 첫 번째 보류중인 이벤트 찾기
- 21. 첫 번째 테이블에서 값을 제외하는 조합
- 22. MySQL - 두 번째 테이블의 마지막 레코드를 반환 한 다음 첫 번째 테이블에서 모두를 반환합니다.
- 23. 두 번째 테이블에서 종료되지 않는 한 테이블에서 레코드를 선택하는 방법
- 24. 첫 번째 1000 개의 레코드를 검색 한 후 다음 1000 번째 레코드를 검색하는 방법은 무엇입니까?
- 25. 첫 번째 테이블에서 왼쪽 조인을 제한합니다.
- 26. 내가 사용한 첫 번째 구문이이 테이블에서 작동하지 않습니다.
- 27. PHP의 switch 문에서 첫 번째 레코드를 꺼내십시오.
- 28. 첫 번째 레코드를 정렬 된 맵으로 표시
- 29. GROUP BY 첫 번째 레코드를 반환
- 30. SQL보기 만 첫 번째 레코드를 반환합니다.
Model.last 레일에서 id desc로 주문합니다. –
Rails 4에 있습니다.이 문제도 해결되었습니다. Model.first는 id 오름차순으로 정렬됩니다. –
예 - 첫 번째 동작은 RDBMS에 따라 다릅니다. 그것은 일관성이 없기 때문에 호기심이 많습니다. Rails가 마지막으로 "가장 높은 기본 키 값을 가진"의미를 매우 좋아한다면 Rails가 데이터베이스에 남겨 두는 대신 "첫 번째"에 대한 동작을 지정할 수도 있습니다. –