2012-09-06 4 views

답변

7

당신이 좋아하는 뭔가 과거에 가장 가까운 기록을 찾을 수 : 마찬가지로

Record.where("created_at <= ?", Date.today).order_by("created_at DESC").limit(1) 

, 당신은 미래

Record.where("created_at >= ?", Date.today).order_by("created_at ASC").limit(1) 

에 가장 가까운 기록을 가지고 그리고 느릅 나무 하나가 가장 가까운 비교할 수 있습니다 현재 날짜로 ...

단일 요청으로 해결할 수있는 해결책이있을 수 있지만 SQL 서버를 사용하는 경우 방법을 찾을 수 없습니다. DATEDIFF 메소드가 있습니다. 엘프).

업데이트 : 모든 created_at 과거에 있는지 경우 미샤

-감사합니다, 당신은 마지막으로 생성 된 레코드를 찾고, 그는

Record.order("created_at").last 

을 작성할 수 있습니다

업데이트

모든 레코드를 만들려면 같은 날짜에 마지막 레코드를 만듭니다.

last_record_date = Record.max(:created_at) 
Record.where(:created_at => (last_record_date.at_beginning_of_day)..(last_record_date.end_of_day)) 
+1

미래에는 'created_date'가 가능하지만 레일스의 자동 타임 스탬프를 사용하면 발생하지 않습니다. 그래서 당신은'where' 절을 생략 할 수 있습니다. 'order_by ("created_at DESC")를 사용하면 충분합니다. – Mischa

+0

@ 미샤 당신이 옳습니다! 나는 해결책을 간단하게 생각하지 않고, 질문을 다시 읽었을 때 날짜가 될 수 있다고 생각하는 답변을 작성하고'created_at'로 변경했습니다. 감사. – Baldrick

+0

감사합니다. Baldrick 오늘 날짜에 가장 가까운 레코드를 가져오고 정렬하지 않고 필터링하는 것이 좋습니다. MIN (Date (created_at) - Date.today) 라인을 따라 뭔가가 있습니다. 무슨 뜻인지 알 겠어? – chell

관련 문제