2012-10-30 2 views
2

ActiveAdmin은 ActiveRecord 모델 용으로 완전 갈색 발판을 만드는 데 매우 유용합니다. 그러나 우리 모델에는 부동 소수점 형 (그리고 소수점 이하) 컬럼이 있으며 ActiveAdmin은 컬럼에 대한 필터를 생성하지 못합니다. 예를 들어 ActiveRecord 모델의 부동 필드를 필터링하는 ActiveAdmin

,

ActiveAdmin.register ForexRate do 
    filter :rate, :as => :numeric 
end 

내가 잘못 여기서 뭐하는 거지

undefined method `rate_gt' for #<MetaSearch::Searches::ForexRate:0x007fa4427bb018> 

말을 나에게 NoMethodError을 준다? 미리 감사드립니다!

P. 정수형 컬럼에서 같은 필터가 작동하는 것을 확인했습니다.

+0

을 (rate: 옆 빈 공지 사항) 무엇을 열 속도에 대한 SQL 형식입니까? – Fivell

+0

SQLite3에서'rate' 컬럼은'REAL'에 있습니다. (나는'DECIMAL' 이어야만한다는 것을 알고있다.) – Hongweng

답변

0

내 테이블의 rateFLOAT 또는 DECIMAL(x,y) 대신 REAL 인 문제가 발생한 것 같습니다. FLOAT 또는 DECIMAL로 변경하면 문제가 해결됩니다.

그것은 열이 REAL 또는 다른 인식 할 수없는 유형의 경우, 그 관찰하는 것이 재미있다, 액티브 :: 자료 번호는 검사가된다 :

>> ForexRate 
=> ForexRate(id: integer, created_at: timestamp, updated_at: timestamp, rate: , from: string, to:string) 

0

source에서 빨리 확인하면 올바른 것으로 보입니다. 나는이 문제를 스스로 해결했다. 기본적으로 ActiveAdmin은 수레를 잡아서 숫자 필터를 적용해야합니다. :as => :numeric을 지정하지 않고 작동하는지 확인해 보셨습니까? 당신은 문자열이 아닌 부동으로 DB에 필드를 저장할 수 있습니까? 마지막으로, 존재하고 올바르게 명명 된 열을 참조하고 있습니까 ??

+0

나는': as => : numeric'을 제거하려고 노력했다.'rate'는'REAL'이고, 컬럼은 존재하고, propery는 명명 된 이름이다. ActiveRecord는 실제로 행을로드하고 'ForexRate # rate'은'Float'입니다. 이상한... – Hongweng

관련 문제