2011-04-26 3 views
2

나는 datetime 타입의 start_at를 가진 이벤트 모델을 가지고 있습니다. 오늘 이벤트가 남아 있는지 찾기 위해 어떻게 검색 할 수 있나요? 지금부터 자정까지의 start_at입니다. 이 여러 사용자를위한 완전히 정확하려는 경우 사용자의 시간대를 처리해야합니다레일즈 3 자정부터 자정까지

감사

답변

11

, 당신은 지금이 작업을 수행 할 수 있습니다

은 범위 조건

당신은 예를 들어, 테이블의 (내부 범위를 찾고 있다면, 사용자가 생성 특정 시간대에 ) 조건 입력란에 IN SQL 문을 함께 사용할 수 있습니다. 당신이 두 날짜 당신이 범위 보기에 이런 일을 할 수 컨트롤러에서 들어오는 있던 경우 :

Client.where(:created_at => (params[:start_date].to_date)..(params[:end_date].to_date)) 

그래서 귀하의 경우에는 다음과 같습니다 그냥

Event.where(:start_at => (Time.zone.now)..(Time.zone.now.end_of_day)) 

테스트되었고 또한 괄호없이 Time.zone.nowTime.zone.now.end_of_day 주위에 작동합니다.

(Rails Guides)

+0

2011-05-14 08:06:00 -0500으로 start_date 이벤트가 있지만'Event.where (: start_at => '2011-05-14 08:00:00 -0500'.. '2011-05 -14 08:10:00 -0500 ')'빈 배열을 반환합니다. – ed1t

+0

문자열 대신 날짜 객체를 사용하면 효과가있을 수 있습니다.'Event.where (: start_at => '2011-05-14 08 : 00 : 00'.to_date .. '2011-05-14 08:10 : 00'.to_date)'. 이 방법이 도움이되지 않으면 생성 된 SQL을 게시하십시오. – Mischa

3
Event.where('start_at >= ? and start_at <= ?', Time.zone.now, Time.zone.now.end_of_day) 

. 레일 3에서

+0

+1 시간대에 대한 설명입니다. – Mischa

0
Event.where("start_at BETWEEN ? AND ?", Time.zone.now, Time.zone.now.end_of_day)