2013-10-03 82 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