Скорее всего, вам потребуется использовать метод joins .
Если вы предоставите более подробную информацию о коде вашей модели и схеме, мы могли бы предоставить более подробную информацию, но это будет что-то вроде.
Family.joins(some_join_object).where(some_sql_search_string)
Если у вас есть таблица соединения, включающая все нужные вам столбцы, укажите условия, по которым вы хотите выполнить фильтрацию.
Family.joins(:players, :coaches, :teams).where("families.name='Wesley' and teams.name='Crushers'")
Вот пример из предоставленной ссылки.
class Category < ApplicationRecord
has_many :articles
end
class Article < ApplicationRecord
belongs_to :category
has_many :comments
has_many :tags
end
class Comment < ApplicationRecord
belongs_to :article
has_one :guest
end
class Guest < ApplicationRecord
belongs_to :comment
end
class Tag < ApplicationRecord
belongs_to :article
end
12.1.3.2 Присоединение к вложенным ассоциациям (многоуровневое)
Category.joins(articles: [{ comments: :guest }, :tags])
Это производит:
ВЫБРАТЬ категории. * ИЗ категорий ВНУТРЕННИЕ СОЕДИНЕНИЯ статьи НА
Articles.category_id = Categories.id ВНУТРЕННЕЕ СОЕДИНЕНИЕ комментарии
comments.article_id = Articles.id ВНУТРЕННИ
guest.comment_id = comments.id ВНУТРЕННИЕ ПРИЛОЖЕНИЯ
articles.id
Или по-английски: «вернуть все категории, в которых есть статьи, где те
статьи имеют комментарий, сделанный гостем, и где эти статьи также
есть тег. "