Я пытаюсь получить все товарные бренды, которые имеют часть, принадлежащую названной категории (category.name = «автомобиль»), через многие для многих отношений.Выбирайте значения между многими или многими отношениями в активной записи, используя «где»
Вот модели:
class Brand < ActiveRecord::Base
has_many :brand_parts
has_many :parts, through: :brand_parts
end
-
class Category < ActiveRecord::Base
has_many :parts
end
-
class Part < ActiveRecord::Base
belongs_to :category
has_many :brand_parts
has_many :brands, through: :brand_parts
end
-
class BrandPart < ActiveRecord::Base
belongs_to :brand
belongs_to :part
end
Update: Ответ ниже прибил его
Вот это то, что я получил до сих пор:
Part.joins(:category).joins(:brands).where(category: {name: 'car'}).select(brands.name).distinct
Запрос выводит (перечислены ниже) прекрасно работает в PG админ, но через активную запись вместо того, чтобы быть в состоянии видеть названия бренда, я просто получить результирующий набор, который выглядит следующим образом:
#<Part id: nil>
#<Part id: nil>
#<Part id: nil>
Любая вероятность того, что вы используете PostGreSQL ..? – MrYoshiji
Да, я уверен, это :) – newUserNameHere
Perfect :) дайте мне 5mn – MrYoshiji