2017-02-27 9 views
0

私のアプリには、ユーザ、組織、ユーザ組織の3つのテーブルがあります。最後のテーブルはuser_idとorganization_idを保持します。だから、すべてのユーザーが多くの組織を持つことができます。Rails:現在のユーザと同じ外部キーを持つデータベースからレコードを選択します

は、私が今やりたいことは、現在のユーザーよりもuser_organizationテーブルに同じORGANIZATION_ID年代を持つすべてのユーザーを選択することです。

だからe。 g。現在のユーザーがids 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より多くのクエリは、ユーザーデータを取得した場合(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

関連する問題