为 Rails/ActiveAdmin 中的 belongs_to 关系禁用自动生成的下拉列表

Disable the auto generated dropdown for belongs_to relations in Rails/ActiveAdmin

我有两个模型:UserDevice 和 UserInfo 如下(在 schema.rb 中):

  create_table "user_devices", force: :cascade do |t|
    t.integer  "user_info_id"
    t.string   "platform"
    t.string   "unique_id"
    t.string   "id_for_push"
    t.string   "last_ip"
    t.string   "unique_id_type"
    t.datetime "created_at",     null: false
    t.datetime "updated_at",     null: false
  end

  add_index "user_devices", ["user_info_id"], name: "index_user_devices_on_user_info_id", using: :btree

  create_table "user_infos", force: :cascade do |t|
    t.string "google_unique_id"
    t.string "email"
    t.uuid   "user_id"
  end

将 UserDevice 模型添加到 ActiveAdmin,会自动创建 UserInfo 过滤器并显着减慢加载时间,因为它会加载所有 user_infos - 参见图片。

如何删除此过滤器或将其更改为简单的文本框/查找?

要禁用过滤添加

config.filters = false

到要禁用过滤器的页面定义。

要在 AA 中创建自定义过滤器,您可以使用 filter:

filter :user_info, as: :select, collection: -> { UserInfo.pluck(:id, :email) }

编辑

正在向 AA 添加文本过滤器:

filter :user_info_email_cont, label: 'Preferences' # it will search by associated `user_infos` table, by column email.

您也可以选择user_info_email_eq(以找到完全匹配) Take a look 更多示例

(如果 has_many 使用 user_infos_xxx,如果有 user_info_xxx