2013-06-18 53 views
4

你好我正在它採用色器件ActiveAdmin一個Rails 3.2.9 應用採用主動管理顯示名稱,而不是ID。我有像用戶和公司的模型。我希望管理員從特定公司的註冊用戶列表中選擇一位經理。如何在軌道3

我的用戶的表有以下字段:ID,用戶名,電子郵件,COMPANY_ID,密碼等

我公司的表有:ID,COM​​PANY_NAME,經理標識(這不過的用戶ID),created_at等

管理員選擇了公司的經理後,我希望他的姓名(用戶名錶中的用戶名)出現在公司的索引頁中,但現在只有manager_id顯示在索引頁中。 (上編輯,選擇管理者的下拉菜單可顯示用戶名列表)

請讓我知道如何使用查詢/加入語句來完成這個

這裏是我的companies.rb文件管理

ActiveAdmin.register Company do 
    index do 
    column "Company", :name 
    column :address 
    column "No. of Subscriptions", :no_of_licenses 
    column "Manager", :manager_id 
    default_actions 
    end 
    filter :name 

    form do |f| 
    f.inputs "Company Details" do 
     f.input :name 
     f.input :address 
     f.input :no_of_licenses, :label => 'No of Subscriptions' 
     f.input :manager_id, :as => :select, :collection => User.joins('LEFT OUTER JOIN companies ON users.company_id = companies.id').map{|u| [u.username, u.id]} 
    end 
    f.buttons 
    end 
end 

回答

2

正如@Bunty所說的,我們應該在用戶記錄傳遞給經理欄。下面的代碼工作!

column "Manager" do |m| 
    usr = User.find(m.manager_id).username 
end 

現在這顯示管理器的名稱,而不是像MANAGER_ID前

9

由於您已經使用manager_id而不是user_id,因此活動管理員將其視爲單個整數值。

要使用id自動獲取記錄,您可以生成遷移並將其更改爲user_id。

如果你不想在更改列名,然後通過彷彿用戶紀錄,

column "Manager" do |m| 
    usr = User.find(m.manager_id) 
    link_to usr.title, admin_user_path(m.manager_id) 
end 
+0

感謝您的幫助!這工作除了鏈接錯誤和第一行是返回一個對象ID。我修改了這一點,它的工作原理。我會在我的答案更新 –