Rails 3에서 최신 기록 찾기
rails3의 테이블에서 최신 레코드를 찾는 방법이 있는지 궁금합니다.
감사
엘리엇
Post 모델이 주어지면 다음을 수행 할 수 있습니다. @post = Post.order("created_at").last
(내가 a를하지 않은 @post = Post.last
이유는 항상 기본 키 (일반적으로 id
) 를 기준으로 정렬하기 때문입니다 . 대부분의 경우 이것은 괜찮지 만 문제를 일으킬 수있는 시나리오 (예 : 사용자 정의 설정)가있을 것입니다. 레코드의 ID, 기본 키 순서 지정 / 자동 번호 지정에 영향을주는 데이터베이스 변경 등) created_at
타임 스탬프 별로 정렬 하면 실제로 가장 최근 레코드를 얻을 수 있습니다.
dmarkow의 대답은 기술적으로 정확하지만 created_at에 대한 인덱스를 만들지 않으면 데이터베이스가 커짐에 따라 점점 더 느린 쿼리가 발생할 위험이 있습니다.
"id"열이 자동 증가 기본 키 (일 가능성이 높음)라는 것을 알고 있다면 정의에 따른 인덱스이므로 사용하십시오.
또한 AREL이 find (: last)에서 하나의 레코드 만 선택하도록 최적화되어 있지 않으면 모든 레코드를 선택한 다음 "last ()"메서드를 사용하여 마지막 레코드 만 반환 할 위험이 있습니다. 결과를 다음 중 하나로 제한하는 것이 더 효율적입니다.
MyModel.last(:order => "id asc", :limit => 1)
또는
MyModel.first(:order => "id desc", :limit => 1)
created_at
트래픽이 충분히 높은 테이블을 사용하면 모호한 문제가 발생할 수 있습니다 .
예. 시험:
INSERT INTO table (created_at) VALUES ( NOW() );
INSERT INTO table (created_at) VALUES ( NOW() );
.. 동일한을 가질 가능성이 있으며 created_at
해상도는 1 초에 불과합니다. 정렬은 특별한 순서없이 그들을 반환합니다.
마이크로 타임 값을 저장하고 정렬하는 것이 더 나을 수 있습니다.
예, .last 메소드를 사용할 수 있습니다.
따라서 모델이 Post라고 불리는 경우 :
>> Post.last
=> #<Post ...>
이름이 ModelName
다음 과 같은 모델을 시도하십시오 .
record = ModelName.last
참조 URL : https://stackoverflow.com/questions/4870531/find-the-newest-record-in-rails-3
'your programing' 카테고리의 다른 글
Google MAP API v3 : 표시된 마커의 중앙 및 확대 / 축소 (0) | 2021.01.05 |
---|---|
특정 열의 값이 다른 열의 값보다 작은 경우 행만 선택 (0) | 2021.01.05 |
MySQL에 연결하고 쿼리를 실행하는 데 가장 안전한 Python 모범 사례 (0) | 2021.01.05 |
Jasmine의 toHaveBeenCalledWith 메서드와 함께 객체 유형 사용 (0) | 2021.01.05 |
빌드 타임 스탬프를 APK에 쓰는 방법 (0) | 2020.12.31 |