在一个严重依赖ActiveAdmin的Ruby on Rails应用程序中,我有一个赞助商模型,它与赞助模型相关联。一个sponsor
可以赞助许多孩子,因此一个sponsor
可以有多个sponsorships
。
我想做的是,能够在赞助商索引页面上按赞助商数量过滤赞助商。因此,举例来说,我只希望看到那些拥有多个赞助商或少于五个赞助商的赞助商,依此类推。你明白了。在Ruby中,我想要一个过滤器,它可以做以下几行:
Sponsor.all.select { |sp| sp.sponsorships.count > 1 }
我发现它实际上很难做到。默认的ActiveAdmin过滤器处理特定模型(或其子模型)的属性,而不是自定义方法,而我需要通过自定义方法精确过滤。所以这是ActiveAdmin的组合视图/控制器sponsor.rb文件中的过滤器:
filter :sponsorships_count, label: 'Sponsorships', as: :numeric
其中:sponsorships_count
不是赞助商模型的属性。
我尝试使用Ransacker(似乎some people have had success with it),但无法找出正确的语法。其他人有幸将过滤器指定为自定义(使用as: custom
语法,例如here,并提供模型范围的名称作为过滤器名称),但这对我来说并不适合(应用程序)正在使用ActiveAdmin版本1.0.0.pre,据报道不能使用此方法。
帮助,有人吗?