为 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
)
我有两个模型: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
)