2017-02-27 57 views
0

我的應用程序有三個表:用戶,組織和用戶組織。最後一個表保存user_id和organization_id。所以每個用戶可以有很多組織。Rails:使用與當前用戶相同的外鍵從數據庫中選擇記錄

我現在想要做的是選擇user_organization表中與當前用戶具有相同organization_id的所有用戶。

所以e。 G。如果當前用戶屬於標識爲3,6和8的組織,我想選擇屬於同一組織的所有用戶。

這個問題可能很愚蠢和簡單,但我現在堅持了幾個小時。 : -/

THX

user.rb

has_many :user_organizations 
has_many :organizations, through: :user_organizations 

organization.rb

has_many :user_organizations 
has_many :users, through: :user_organizations 

user_organization.rb

belongs_to :organization 
belongs_to :user 

回答

2

您可以像

​​

這裏的好處是,通過增加includes你暗示來ActiveRecord的,你經歷的連接表運行需要用戶並使查詢更高效。只要您的連接表模型具有belongs_to(您的連接表格),它應該可以在includes之外運行。但是如果沒有includes,如果您使用map(&:user),那麼它將使用更多的查詢來獲取用戶數據(其中N是匹配的用戶數),而不是使用數據庫連接來獲取第一個查詢的數據。

+0

很酷的作品! – Oliver

0

嘗試:

user_organizations = current_user.organizations 
users_from_same_organization = User.where(organizations: user_organizations) 
+1

雖然此代碼片段可能會解決問題,但[包括解釋](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)確實有助於提高您的質量帖子。請記住,您將來會爲讀者回答問題,而這些人可能不知道您的代碼建議的原因。 – DimaSan

相關問題