ActiveAdmin用于过滤ActiveRecord模型上的浮点字段

时间:2012-10-30 16:50:38

标签: ruby-on-rails activerecord activeadmin

我发现ActiveAdmin对于为我们的ActiveRecord模型创建相当全棕色的脚手架非常有用。但是,我们的模型具有float(和一些十进制)列,而ActiveAdmin无法为它们创建过滤器。

例如,

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

给了我NoMethodError,说

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

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

P.S。我已确认相同的过滤器适用于整数列。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

看起来这个问题来自我的rate REAL而不是FLOATDECIMAL(x,y)。将其更改为FLOAT或DECIMAL可解决问题。

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

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

(注意rate:旁边的空白)