gpt4 book ai didi

ruby-on-rails - 使用 ransacker 自定义搜索

转载 作者:行者123 更新时间:2023-12-04 01:49:07 25 4
gpt4 key购买 nike

我正在尝试向由 Ransack 提供支持的 ActiveAdmin 添加自定义过滤器。不幸的是,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 :full_text_in,
label: 'full text search',
as: :string

过滤器本身有效,因此过滤 tom将列出所有匹配的记录。但是,过滤器输入中的值切换为 ["tom"] .

在应用过滤器之前:

enter image description here

应用过滤器后:

enter image description here

任何想法如何解决这个问题?

最佳答案

有一个等待合并的可洗劫范围的功能:
https://github.com/activerecord-hackery/ransack/pull/288

更新:

我已经将 avit 和 glebm 的工作与 PR https://github.com/activerecord-hackery/ransack/pull/390 合并了,因此现在可以将范围与 Ransack 一起使用。有关文档,请参阅提交:

https://github.com/svoop/ransack/commit/72dd5d12d58919bf37199234cf13f9533f3b8cd5

这是一个现实生活中的例子:

class Project < ActiveRecord::Base
scope :full_text_search, ->(search) { search_in_all_translated(search) }

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

在这个例子中, search_in_all_translated 返回一些复杂的索引全文搜索 SQL。

关于ruby-on-rails - 使用 ransacker 自定义搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22473391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com