我有四种记录。团队。教练玩家们。和家庭。
团队与教练有着一对多的联系。 教练与玩家有一对一的联系。 玩家与家庭有多对一的联系。
我需要找到的是与某些团队相关的特定家族。但是,由于他们的分离,我不能只去Team.last.family
。
是否有办法跳过球员和教练,并直接从诊所向家人提出疑问?
答案 0 :(得分:1)
您很有可能需要使用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])
这将产生:
选择类别。*从类别INNER JOIN文章开启 article.category_id = Categories.id内部加入评论开启 comments.article_id = article.id内部加入访客 guest.comment_id = comments.id标签上的INNER JOIN标签。article_id= article.id
或者用英语:“返回所有包含文章的类别,其中 文章中有客人发表评论,而这些文章也 有一个标签。”