You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Rails的Administrate Gem中实现ID与名称搜索的问题

在Administrate Gem中实现按ID和名称同时搜索

要让Administrate后台的搜索栏同时支持ID和名称搜索,仅给ID字段添加searchable: true还不够,需要结合配置可搜索字段列表:

1. 确保字段标记为可搜索

先在ATTRIBUTE_TYPES里给id字段开启搜索属性,这一步你已经完成,保留即可:

ATTRIBUTE_TYPES = {
  id: Field::Number.with_options(searchable: true),
  name: Field::String,
}.freeze

2. 配置可搜索字段列表

在对应的Dashboard类中,指定包含id和name的可搜索字段集合。根据你使用的Administrate版本,有两种写法:

写法一(使用常量)

class YourModelDashboard < Administrate::BaseDashboard
  # ... 其他现有配置 ...

  ATTRIBUTE_TYPES = {
    id: Field::Number.with_options(searchable: true),
    name: Field::String,
  }.freeze

  # 定义可搜索字段
  SEARCHABLE_FIELDS = %i[id name].freeze
end

写法二(使用方法)

部分新版本的Administrate使用方法定义可搜索字段:

class YourModelDashboard < Administrate::BaseDashboard
  # ... 其他现有配置 ...

  ATTRIBUTE_TYPES = {
    id: Field::Number.with_options(searchable: true),
    name: Field::String,
  }.freeze

  def searchable_fields
    %i[id name]
  end
end

原理说明

Administrate默认仅会将字符串类型的可搜索字段加入搜索范围,数字类型的ID即使开启了searchable: true,也需要手动添加到SEARCHABLE_FIELDS或searchable_fields方法返回的列表中,才能让搜索逻辑同时匹配ID和名称的内容。

内容的提问来源于stack exchange,提问作者Leopoldo Stokes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 13:51:14