2013-12-16 3 views
1

나는 내 웹 사이트에 사용자를 기록 할 수있는 외부 서비스를 가지고 있습니다. 루비에서 시간 간격 얻기

을 방지하기 위해

나는 사용자가 캐시 다음 폼에 MySQL 테이블을 사용 남용을 위해 쫓겨지고 액세스 :

username (STRING) | last access (TIMESTAMP) | has access? (TINYINT(1) - BOOLEAN) 

사용자가 주어진 시간에 접속이 있다면 나는 그가 접근과 돈을 가지고 신뢰 하루 동안 서비스를 쿼리하지 않습니다.

query_again = !user["last access"].between?(Time.now, 1.day.ago) 

이 논리는 항상 어떤 이유로 든 true를 반환합니다.

답변

2

범위 (여기에서 효과적으로 사용함)에서 일반적으로 낮은 숫자가 시작이고 높은 숫자가 끝임을 예상합니다. 당신이 당신 between? 전화

query_again = !user["last access"].between?(1.day.ago, Time.now) 

을의 상태를 전환하는 경우 따라서, 당신은 IRB 쉽게 자신을이를 테스트 할 수 있습니다 당신을 위해 일해야합니다

1.hour.ago.between?(Time.now, 1.day.ago) 
# => false 

1.hour.ago.between?(1.day.ago, Time.now) 
# => true