2013-01-04 3 views
0

저는 여러 응용 프로그램의 라이센스 사용 기록을 보관하는 앱을 보유하고 있습니다. 응용 프로그램은 매 X 분마다 라이센스 사용을 폴링합니다.레일 : 업무 시간별 레코드 기록

업무 시간 사이에 생성되는 레코드를 얻을 수 있도록 레코드를 필터링하고 싶습니다. 영업 시간 중 또는 근무 시간 외의 애플리케이션 사용을 표시하는 이유.

app_usage.find(<app id>.feature.find(:all, 
:conditions => ["name = ? and hour(created_at) > ? and 
    hour(created_at) < ? and dayofweek(created_at) not in (1,7)", 
<feature_name>, 8, 18]) 

물론,이 sqlite3를 데이터베이스에서 작동하지 않습니다 -이 :

현재, 나는 MySQL의 문을 사용하여 필터링하는 코드가 있습니다. 루비를 사용하는 방법이 있는지 알고 싶습니다.

답변

0

ActiveRecord에는 이러한 종류의 MySQL 관련 기능을위한 메소드가 없다고 생각합니다. 적어도 나는 그들을 발견하지 못했다. sqlite에서 이와 비슷한 쿼리를 찾으려면 다음과 같이 입력하십시오.

:conditions => ["name = ? and strftime('%H', created_at) > ? and strftime('%H', created_at) < ? and strftime('%w', created_at) not in (1,7)", <feature_name>, 8, 18] 

이것은 MySQL에서는 작동하지 않습니다.

+0

감사합니다, 제 생각에는 일반 결과를 생성 한 후 for 루프 필터를 수행해야합니다. – erwinkarim

+0

데이터 세트가 너무 크지 않은 경우에는 항상 옵션입니다. –