我发现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。我已确认相同的过滤器适用于整数列。
答案 0 :(得分:0)
快速查看source,看起来你做得对。我自己做了这个,没有问题。默认情况下,ActiveAdmin应捕获浮动并对它们应用数字过滤器。您是否尝试过不指定:as => :numeric
并查看是否有效?你能否确认将数据库中的字段存储为浮点数而不是字符串?最后,引用一个确实存在并且命名正确的列?
答案 1 :(得分:0)
看起来这个问题来自我的rate
REAL
而不是FLOAT
或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:
旁边的空白)