如何在Rails 4 ActiveRecord中获取属于另一组对象的一组对象?

时间:2016-02-18 13:11:24

标签: ruby-on-rails-4 activerecord

如果我有两个模型,比如说,用户模型和下面定义的公司模型。我如何获得一组用户的所有公司?

class User < ActiveRecord::Base
  belongs_to :company
end

class Company < ActiveRecord::Base
  has_many :users
end

users = User.where(:state => "Florida")

由此,我需要一个包含属于这些用户的所有公司的变量

companies = users.?

我是否需要遍历每个用户并将其添加到阵列?我猜有更好的方法来做到这一点。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

你可以这样做

Company.includes(:users).where(users: { state: 'Florida' })

但考虑到http://guides.rubyonrails.org/ recommendations

会更正确
Company.joins(:users).where(users: { state: 'Florida'})

INNER JOIN代替LEFT OUTER JOIN