2011-09-30 7 views
0

에 PostgreSQL을에 의해 숫자로 변환되는 루비 레일에 난 내 비슷한 질문이 말에 의해 시작됩니다. 내가보고 있어요 것은 Heroku가에 작업자에서이 오류가 :는 타임 스탬프 Heroku가

[Worker(host:026e9a98-87ae-4c0c-94c8-315843e68ac1 pid:1)] Buzz#digest! failed with ActiveRecord::StatementInvalid: PGError: ERROR: operator does not exist: timestamp without time zone = numeric 
LINE 1: ...FROM "buzz_topics" WHERE ("buzz_topics"."version" = 0.069980... 
                  ^
HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts. 
SELECT * FROM "buzz_topics" WHERE ("buzz_topics"."version" = 0.0699802335812795) AND ("buzz_topics".buzz_id = 696) LIMIT 1 - 0 failed attempts 

문제는 어떻게 든, 루비 온 레일즈 또는 PostgreSQL의이 이상한 소수에 타임 스탬프를 변환.

BuzzTopic.first(:conditions => [ "version = ?", Feature.current_version ]) 

BuzzTopic이 비슷합니다 현재라는 named_scope 있습니다

는 루비 온 레일즈에서 일을하려고한다 쿼리는 다음과 같이 보인다.

>> Feature.current_version 
=> Mon, 26 Sep 2011 07:06:41 UTC +00:00 

BuzzTopic.version는 단지 소인입니다 :

Feature.current_version는 시간 소인입니다.

heroku run console에서 해당 쿼리를 사용하지만 작업자가이 쿼리를 실행할 때 작동하지 않습니다.

나는 "2011-09-26 7시 6분 41초"와 같은 형식으로 Feature.current_version 변환 시도 :

def self.current_version # original 
    last_feature = enabled.last 
    last_feature.present? ? last_feature.version : nil 
end 

def self.current_version 
    last_feature = enabled.last 
    last_feature.present? ? last_feature.version.utc.to_formatted_s(:db) : nil 
end 

및 시도 다른 named_scopes을 BuzzTopic 위해 여기에 지금까지 시도 것들의 목록입니다 :

named_scope :current, lambda { { :conditions => { :version => Feature.current_version } } } # original 

named_scope :current, lambda { { :conditions => [ "version = to_timestamp(?)", Feature.current_version ] } } 

named_scope :current, lambda { { :conditions => [ "version = timestamp ?", Feature.current_version ] } } 

이들 중 어느 것도 작동하지 않았으며, 잊어 버린 다른 것들을 확실히 시도했습니다. 나는 갇혀 있고 무엇을 해야할지 모른다. 그래서 나는 여기에왔다. 누구든지 도와 줄 수 있습니까?

답변

0

실제로이 문제는 다른 문제를 해결할 때 변경되지 않은 일부 코드로 인해 발생했습니다. 블록에 타임 스탬프와 십진수를 전달하는 대신 십진법을 통과 시켰습니다. 이제는이 문제를 해결했습니다.