Rails 5在使用单个和多个关联关系时进行查询

时间:2017-02-13 00:06:59

标签: mysql ruby-on-rails rails-activerecord ruby-on-rails-5 active-record-query

我有一个带有以下设置的rails应用程序:

class Organization < ApplicationRecord
    has_many :user_orgs
    has_many :users, :through => :user_orgs
end

class UserOrg < ApplicationRecord
    #  organization_id      :integer
    #  user_id :integer
    belongs_to :organization
    belongs_to :user
end

class User < ApplicationRecord
    #  car_id :integer
    has_many :user_orgs
    has_many :organizations, :through => :user_orgs
    belongs_to :car
end

class Car < ApplicationRecord
    #  brand :string
    has_many :users
end

我要做的是写一个Rails 5查询,以便它返回设置了某个汽车属性的所有组织,即返回所有组织,其中有一个用户拥有一个具有给定品牌的汽车。

在进行查询时,如何加入组织中的Car类?目前,我通过执行以下操作来搜索基于用户标准的组织:

Organization.joins(:users).where("users.name = ?", name)

但我希望能够在查询中添加汽车标准。

1 个答案:

答案 0 :(得分:0)

如何使用它 -

###add this scope in Organisation model that has - has_many :users
scope :get_users_by_carBrand, -> (brand) { includes(:cars).where(:cars=> {:name => brand} }

###this is the select query 
Organization.includes(:users).get_users_by_carBrand("BMW")