2013-07-18 4 views
0

저는 레일스 타임 스탬프와 ttl이라는 속성을 사용하여 각 레코드 업데이트 사이의 시간을 분 단위로 나타내는 A 모델을 가지고 있습니다. 내가 Feed.where("(?-updated_at) > ttl", Time.now).to_a의 변형을 사용하려고했습니다시간을 기준으로 레코드 선택

WHERE (Time.now - updated_at).to_minutes > ttl) 

하지만 난 아직 성공하지했습니다

나는 ERGO를 업데이트해야 모든 레코드를 선택합니다. 누군가가 쿼리를 도와 줄 수 있습니까?

답변

2

이유는 데이터베이스가 산술 계산과 마찬가지로 시간 계산을 할 수 없기 때문입니다.
DB의 시간 함수를 사용해야합니다. 불행히도 표준이 없습니다.

MySQL의에서

당신이 사용할 수

Feed.where("TIMESTAMPADD(MINUTE,ttl,updated_at)<?",Time.now) 
+0

Abit의 짜증나는 DEV에서 MySQL을 사용해야하지만, 당신이'사용할 수 있습니다 SQLite''사용도 매력 – Artmann

+0

처럼 작동하는 위치 ("의 strftime ('% Y- % % s ', updated_at,'+ '|| ttl ||'minutes ')

관련 문제