2

我发现ActiveAdmin对于为我们的 ActiveRecord 模型创建相当完整的棕色脚手架非常有用。但是,我们的模型有浮点(和一些小数)列,ActiveAdmin 无法为它们创建过滤器。

例如,

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

给我NoMethodError,说

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

我在这里做错了什么?提前致谢!

PS我已经确认相同的过滤器适用于整数列。

4

2 回答 2

0

快速查看源代码,看来您做得对。我自己做过,没有问题。默认情况下,ActiveAdmin 应该捕获浮点数并对其应用数字过滤器。您是否尝试过不指定:as => :numeric并查看它是否有效?您能否确认将您的字段存储在数据库中作为浮点数而不是字符串?最后,是否引用了确实存在且名称正确的列?

于 2012-10-30T17:29:23.277 回答
0

看起来问题出在我的桌子上有rateasREAL而不是FLOATor DECIMAL(x,y)。将其更改为 FLOAT 或 DECIMAL 解决了该问题。

有趣的是,当列是 REAL 或其他无法识别的类型时,ActiveRecord::Base#inspect 变为:

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

(注意旁边的空白rate:

于 2012-11-04T09:07:32.073 回答