Aks*_*s.. 5 join ruby-on-rails-3 activeadmin
你好我工作的一个Rails 3.2.9应用程序,它使用的设计和ActiveAdmin.我有像用户和公司这样的模型.我希望管理员从特定公司的注册用户列表中选择一个经理.
我的用户表包含以下字段:id,username,email,company_id,password等
我公司的表有:id,company_name,manager_id(这只是用户的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
Run Code Online (Sandbox Code Playgroud)
bun*_*nty 11
由于您使用的是manager_id而不是user_id,因此活动管理员将其视为单个整数值.
要使用id自动获取提取记录,您可以生成迁移并将列更改为user_id.
如果您不想更改列名,则将if传递给用户记录,
column "Manager" do |m|
usr = User.find(m.manager_id)
link_to usr.title, admin_user_path(m.manager_id)
end
Run Code Online (Sandbox Code Playgroud)
正如@Bunty所说,我们应该将用户记录传递给经理列。以下代码有效!
column "Manager" do |m|
usr = User.find(m.manager_id).username
end
Run Code Online (Sandbox Code Playgroud)
现在显示经理的名称,而不是像以前那样显示 manager_id
| 归档时间: |
|
| 查看次数: |
7080 次 |
| 最近记录: |