我有一个 3 表 - 用户、员工、联系人。员工和联系人具有指向关联用户的外键。Employee belongs_to :user Contact belongs_to :user 用户有很多员工,联系人
但是,我想在用户索引视图中列出员工姓名或联系人姓名。
我需要使用 find_by_sql 语句吗?
谢谢,戴夫
我有一个 3 表 - 用户、员工、联系人。员工和联系人具有指向关联用户的外键。Employee belongs_to :user Contact belongs_to :user 用户有很多员工,联系人
但是,我想在用户索引视图中列出员工姓名或联系人姓名。
我需要使用 find_by_sql 语句吗?
谢谢,戴夫
您已经belongs_to
设置了关联,因此您可以has_one
在您的 User 类中为员工和联系人添加关联,然后您可以执行@user.employee.name
或@user.contact.name
。
你绝对不需要find_by_sql
这个。
在您的索引视图中,
<table>
<% @users.each do |user| %>
<tr>
<td><%= user.name %></td>
<td><%= user.employees.map{ |empl| empl.name }.join(", ") %></td>
<td><%= user.contacts.map{ |contact| contact.name }.join(", ") %></td>
</tr>
<% end %>
</table>
唯一的缺点是它将在用户的循环中查询所有用户的员工和所有用户的联系人。如果页面加载速度相当快,请按照上面的代码进行编码,因为这样的代码更清晰。