Tag: activeadmin ransack

ActiveAdmin:按子对象的计数进行筛选

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

Activeadmin:如何筛选与两个或多个搜索词匹配的字符串

假设我有一个带有:email字段的User类。 我们假设我使用activeadmin来管理用户。 制作一个返回与一个字符串匹配的电子邮件的filter,例如“smith”,非常简单。 在admin/user.rb ,我只包含该行 filter :email 这给了我一个完成工作的filter小部件。 但是,此filter不允许我搜索多个项的交集。 我可以搜索包含“smith”的电子邮件,但不能搜索包含“smith”和“.edu”的电子邮件。 Google告诉我,activerecord在引擎盖下使用Ransack ,而Ransack演示具有允许多项搜索的“高级”模式。 将多项搜索小部件放入activeadmin的最简单方法是什么? 理想情况下,我想要一个小部件,允许我输入smith .edu或smith AND .edu来过滤包含这两个术语的电子邮件。

使用ransacker进行自定义搜索

我正在尝试向ActiveAdmin添加自定义filter,这些filter最近由Ransack提供支持。 遗憾的是, ransacker根本没有记录,而且从网上的少量资源中我偶然发现了以下内容(在用户模型中): ransacker :full_text, formatter: ->(search) { ids = User.search_in_all_translated(search).map(&:id) ids = ids.any? ? ids : nil } do |parent| parent.table[:id] end search_in_all_translated方法返回一个用户数组,该数组与所有已翻译属性中的搜索字符串匹配。 在管理页面上,定义了以下filter: filter :full_text_in, label: ‘full text search’, as: :string filter本身有效,因此过滤tom会列出所有匹配的记录。 但是,滤波器输入中的值切换为[“tom”] 。 在应用filter之前: 应用filter后: 任何想法如何解决这一问题?