ActiveAdmin:如何过滤与两个或多个搜索词匹配的字符串

D b'

假设我有一个带有:email字段的User类。假设我正在使用activeadmin来管理用户。

创建一个过滤器以返回匹配一个字符串的电子邮件(例如“史密斯”)非常简单。在中admin/user.rb,我只包括一行

filter :email 

这给了我一个完成此工作的过滤器小部件。

但是,此过滤器不允许我搜索多个术语的交集。我可以搜索包含“ smith”的电子邮件,但不能搜索同时包含“ smith”和“ .edu”的电子邮件。

Google告诉我,activerecord幕后使用Ransack,而Ransack演示具有“高级”模式,允许进行多个术语搜索。

将多词搜索小部件带入activeadmin的最简单方法是什么?

理想情况下,我想要一个小部件,该小部件可以让我输入smith .edusmith AND .edu过滤包含这两个词的电子邮件。

有使用ranasckable范围的简单解决方案

所以在你的模型里放这样的东西

class User < ActiveRecord::Base
    ....
    scope :email_includes, ->(search) {
       current_scope = self
       search.split.uniq.each do |word|
         current_scope = current_scope.where('user.email ILIKE ?', "%#{word}%")  
       end
       current_scope
    }

    def self.ransackable_scopes(auth_object = nil)
      [ :email_includes]
    end
end

之后,您可以使用AA DSL添加过滤器

喜欢

  filter :email_includes, as: :string, label: "Email"

UPD

如果更改email_contains_any应该工作email_includes

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Python 3中具有两个搜索词的字符串中搜索和获取第二个词?

如何使用一个或多个搜索词搜索字符串并在每次匹配后添加字符串?

MySQL-REGEX字符串和匹配词中的搜索词只能是数字或数字

如何在一个字符串中匹配两个非连续词以进行React / Javascript搜索?

如何使用Angular / TypeScript中的两个搜索词进行API URL请求

匹配两个或多个单词之间的字符串,无论顺序如何

高亮显示两个阿拉伯字符串(Javascript)的匹配词

LINQ - 将具有多个条目的搜索词与具有多个条目的另一个字符串进行比较

搜索数组字符串中间词以获取搜索词

如何过滤字符串中的多个限制词?

如何在匹配两个不同字符串的行尾添加两个空格

在版式中实现全局搜索框。如何将搜索词作为查询字符串传递?

如何在包含两个或多个相同字符的字符串中搜索字符串,这些字符用作使用 XPath 的分隔符?

如何在两个文件中匹配字符串并替换字符串?

允许用户在一个字段中搜索两个搜索词

如何匹配以两个指定字符之一开头的字符串,然后是两个或多个数字

如何在 MySQL 中搜索包含两个或多个由空格分隔的单词的字符串字段?

查找以指定搜索词开头,后跟另一个大写字母的任何字符串

在Clojure中过滤两个文本文件之间的匹配字符串

匹配两个文本文件中的字符串并在 Clojure 中过滤

如何使用正则表达式匹配字符串中的两个或多个点

在熊猫中高效地搜索字符串和标签搜索词

C ++在给定搜索词的用户的每个实例中搜索字符串数组。

搜索文件中的两个或多个字符串

在Ruby中迭代搜索两个文件之间的多个字符串

在单个字符串中的两个模式之间搜索多个结果

匹配两个Python字符串中的字符

PHPMyAdmin用两个或多个字符串匹配行

如何在两个目录中使用awk进行多个文件搜索,仅从第二个目录中具有匹配字符串的文件中打印记录