ruby-on-rails – 用ransacker自定义搜索
发布时间:2020-12-16 22:37:18 所属栏目:百科 来源:网络整理
导读:我试图添加自定义过滤器到ActiveAdmin,这是由Ransack这些天.不幸的是,赎金根本没有记录,从网上的少数资源我一起摸索以下(在用户模型): ransacker :full_text,formatter: -(search) { ids = User.search_in_all_translated(search).map(:id) ids = ids.any?
我试图添加自定义过滤器到ActiveAdmin,这是由Ransack这些天.不幸的是,赎金根本没有记录,从网上的少数资源我一起摸索以下(在用户模型):
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”]. 在应用过滤器之前: 应用过滤器后: 任何想法如何解决这个问题? 解决方法
有一个等待合并的可交付范围的功能:
https://github.com/activerecord-hackery/ransack/pull/288 更新: 我已经与PRhttps://github.com/activerecord-hackery/ransack/pull/390合并了avit和glebm的工作,因此现在可以使用Ransack的范围.有关文档,请参阅commit: 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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |