2013-10-03 61 views
0

我是Ruby的新手,所以我不知道如何通过连接表选择数据。我的数据库有3个表格:usersrolesclient_organizationsRails-如何从多个表中选择

users(id,email) 
client_organizations(id,name) 
roles(id,user_id,client_organization_id,role) 

我要显示这样的数据:

User_Email      Role 
          RoleA for [ClientA] 
[email protected]    RoleB for [ClientB] 
          RoleC for [ClientB] 

[email protected]    RoleB for [ClientC] 

在Ruby中,我怎么可以像上面的DATABSE获取数据?

+0

这真是一种基本的东西,最好由阅读一些教程或书籍,而不是要求别人写你的代码,你可以学到。检查rails标签上的资源以获取资源。 – Matt

回答

0

假设您的模型配置正确,您可以使用您的关联。这绝不是优化,而是简单地展示逻辑。您将希望加载您的关联进行数据库优化。

控制器

@users = User.all 

视图

<table> 
    <tr><th>email</th><th>role</th></tr> 
    <% @users.each do |user| %> 

    <tr> 
     <td><%= user.email %></td> 
     <td> 
      <% user.roles.each do |role| %> 
      <%= "#{role.role} for [#{role.client_organization.name}]" %><br> 
      <% end %> 
     </td> 
    </tr> 
    <% end %> 
    </table> 
+0

感谢您对[#{role.client_organization.name}]“%>的代码<%=”#{role.role},因为每个用户都有很多角色,我希望通过client_organization [A。 .Z] – chinh

+0

你可以做相反的事情,并列出每个组织,他们的角色,然后列出用户。按组织名称排序。 – kobaltz

+0

我的意思是我在上面提到的组织的名称与1个用户订单A..Z关联的结果,例如[email protected]有3个组织:M,A,F。我想要的结果:[email protected] A,M,F和其他用户的结果类似。感谢很多 – chinh