0

У меня есть приложение рельсы со следующей установкой:Rails 5 запросов при использовании как одиночные и множественные отношения ассоциации

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) 

Но я хочу, чтобы иметь возможность добавить критерии автомобиля на запрос, а также.

ответ

0

Как об использовании this-

###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") 
+0

Это выглядит, как он будет выполнять поиск только для пользователей с заданным именем, а не автомобиль с данным именем? – Hawkeye001

+0

Я обновил свой ответ ... любезно проверил – Milind

+0

Извините @milind, у меня была ошибка в моем вопросе (ассоциации авто/пользователя были отменены, исправлены в исходном сводке сейчас), поэтому на основе фактической структуры это решение не будет Не применяйте. – Hawkeye001