在严重依赖 ActiveAdmin 的 Ruby on Rails 应用程序中,我有一个赞助商模型,它与赞助商模型关联。一sponsor
可以资助很多孩子,所以一个sponsor
可以有很多sponsorships
.
我想做的是能够在赞助商索引页面上根据赞助商的赞助数量过滤掉赞助商。例如,我只想查看那些拥有超过 1 个或少于 5 个赞助商的赞助商,等等。你明白了。用 Ruby 来说,我想要一个过滤器,它可以执行以下操作:
Sponsor.all.select { |sp| sp.sponsorships.count > 1 }
我发现,事实上,这很难做到。默认 ActiveAdmin 的过滤器适用于特定模型(或其子模型)的属性,而不适用于自定义方法,而我需要通过自定义方法进行精确过滤。这是 ActiveAdmin 的组合视图/控制器 Sponsor.rb 文件中的过滤器:
filter :sponsorships_count, label: 'Sponsorships', as: :numeric
where :sponsorships_count
不是赞助商模型的属性。
我尝试使用Ransacker(看起来有些人已经成功了 http://cavewall.jaguardesignstudio.com/2014/05/01/activeadmin-filters-with-ransack/),但无法找出正确的语法。其他人有一些运气将过滤器指定为自定义(使用as: custom
语法如here https://gist.github.com/rdj/1057991并提供模型范围的名称作为过滤器名称),但这对我来说不起作用(该应用程序使用的是 ActiveAdmin 版本 1.0.0.pre,据报道该版本不适用于此方法)。
帮忙,有人吗?
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)