2014-01-22 48 views
0

我在我的數據庫中有四個表。一個是用戶,另一個是組織。一個用戶可以有很多組織,一個組織可以有很多用戶。該關係存儲在名爲user_organizations的第三個表中,其中的列user_id和organization_id。Ruby on Rails - 與下拉有很多關係

第四個表稱爲organization_details,其中存儲有關組織的其他多行信息。

我想要發生的事情是:當登錄用戶想要將組織詳細信息添加到通過user_organizations鏈接到的組織中時,只有他們鏈接的組織應該出現在下拉列表中。

我不確定如何去做這件事。系統通過current_user返回有關登錄用戶的信息,例如<%= current_user.first_name%>。

所以我試圖做這樣的事情:

collection_select(:organization_detail,:的organization_ID,Organization.where({ID:current_user.id ...一些東西約user_organization是這裏太}), :id,:name_and_state)

解決此問題的最佳方法是什麼?非常感謝你!

回答

2

您應該可以使用內置關聯。由於用戶的has_many組織可以調用current_user.organizations這樣的:

collection_select(:organization_detail, :organization_id, current_user.organizations, :id, :name_and_state) 

這裏假設你有一切都在正確的模型迷上了。

如果您對他們不熟悉,還應該查看Rails Guide to associations

+0

哇,這是比我正在它是比較容易的方式!謝謝謝謝!我一定會看看你提供的鏈接。我認爲第三張表格會更復雜。 – Rachel9494

0

current_user.organizations會做的伎倆。

您的下拉會是這個樣子:

<ul> 
    <%- current_user.organizations.each do |organization| -%> 
    <li><%= link_to organization.name, your_path_here %></li> 
    <%- end -%> 
</ul> 
+0

非常感謝您的幫助。這看起來像是一個很好的替代下拉,如果我會去那條路線。我討厭我如何讓事情比他們需要在RoR中有時需要更復雜。 – Rachel9494