2015-05-19 49 views
0

我有兩個型號:UserDevice和作爲的UserInfo(在schema.rb)如下:禁用自動生成的下拉列表中的Rails belongs_to的關係/ ActiveAdmin

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 - 請參閱圖像。

如何刪除此過濾器或將其更改爲簡單的文本框/查找?

enter image description here

+1

嘿@Nimo檢查答案,讓我知道,如果它幫助! –

回答

1

要禁用過濾添加

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更多示例

(使用user_infos_xxx如果has_many,user_info_xxx如果有一個)

+0

謝謝@andrey!兩種解決方案「種類」工作。我想將下拉列表更改爲可輸入用戶名稱/編號的文本框。有沒有辦法做到這一點? – Nimo

+1

@Nimo,我會在第二個更新答案 –

+0

謝謝@安德烈!感謝您的鏈接!我標記爲正確的答案。 PS我在這裏有一個後續問題,你可能會知道答案:http://stackoverflow.com/questions/30373747/activeadmin-dropdown-too-big-when-editing-model-instance歡呼! :) – Nimo