2012-01-23 9 views
1

My Userテーブルがuser_companyテーブルを介してCompanyに接続されています。今私は、ユーザーが属している会社名を取得したいと思います。私が使用すべきクエリを提案できますか?アクティブなレコードクエリでのユーザ関係の結合

ユーザー
has_many :companies, :through => :user_companies

会社
has_many :users, :through => :user_companies

ユーザーは、直接会社に属していません。

user.company.nameはエラーを示します。ユーザーが所属する会社名を調べたい

答えて

1

ユーザーは複数の会社を持つので、user.companiesです。名前を取得するには、たとえば次のようにします。 user.companies.map(&:name)

+0

ねえ、おかげですべての名前を取得することができます。あなたは私の問題を解決しました。 – Metal

0

@user.companiesは、ユーザーが関連付けられているすべての企業の配列を提供します。
これで、単純に配列を繰り返して、各企業の会社名を取得することができます。

company_names = [] 
@user.companies.each {|entry| company_names << entry.name} 

あなたはuser_companiesテーブルにある同社のname属性を持っていないときです。あなたがそのようにしている場合
、あなたは単に

UserCompany.where(:select=>"name", :user_id=> @user) 
関連する問題