用户关系加入活动记录查询

时间:2012-01-23 09:46:08

标签: ruby-on-rails-3 activerecord join

我的User表格通过Company表格与user_company相关联。现在我想检索用户所属的公司名称。请问您能建议我使用的查询吗?

用户
has_many :companies, :through => :user_companies

公司
has_many :users, :through => :user_companies

用户不直接属于公司。

user.company.name给出错误。我想找出用户所属的公司名称。

2 个答案:

答案 0 :(得分:1)

由于用户有多家公司,因此为user.companies。要获取名称,您可以执行以下操作: user.companies.map(&:name)

答案 1 :(得分:0)

@user.companies将为您提供与该用户相关联的所有公司的数组 现在,您可以简单地遍历数组并获取每个公司的公司名称。

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

这是在user_companies表中没有公司名称属性时 如果您这样做,您可以通过

获取所有名称
UserCompany.where(:select=>"name", :user_id=> @user)