2012-10-30 41 views
2

我發現ActiveAdmin創造,而全棕色腳手架我們的ActiveRecord的模型是非常有用的。然而,我們的模型有浮動(和一些十進制)列和ActiveAdmin未能爲他們創建過濾器。ActiveAdmin過濾浮點字段上的ActiveRecord模型

例如,

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

給我NoMethodError,說

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

我在做什麼錯在這裏?提前致謝!

P.S.我已經確認相同的過濾器適用於整數列。

+0

什麼是你的SQL類型的列速率? – Fivell

+0

在sqlite3的所述'rate'列上'REAL'。 (我知道它必須是'DECIMAL'但) – Hongweng

回答

0

看起來像問題是從我的桌子有rateREAL而不是FLOATDECIMAL(x,y)。將其更改爲FLOAT或DECIMAL可解決問題。

這也是有趣的觀察是,當列是真實的,或其他類型無法識別,ActiveRecord的::基地#檢查變爲:

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

(注意空白旁邊rate:

0

趕緊看source,那就好像你這樣做是正確的。我自己做了這件事,沒有問題。默認情況下,ActiveAdmin應該捕獲浮動並對其應用數值過濾器。你試過不指定:as => :numeric,看是否可行?你能否確認將你的字段存儲在數據庫中,而不是字符串?最後,引用一個確實存在且名稱正確的列?

+0

我試圖刪除':爲=>:numeric',證實'rate'是'REAL',列存在並命名屬性格式。 ActiveRecord實際上加載行,'ForexRate#rate'是'Float'。奇怪... – Hongweng